NexusPi Git Node
Commit 6612d2c53e01bbc7a270aa4c13535241776b7d1c
Parents : 612630c
Author : James L <jrl290@gmail.com>
Date : 2026-07-28T22:51:49-04:00
v1.0.50 — Ratcheted announce validation, HDLC/KISS dual framing, Ed25519 hardening, TCP echo fix, rnprobe corrections
Changes
16 files changed, 8642 insertions(+), 4470 deletions(-)
Diff
diff --git a/Config.h b/Config.h
index 4fec874..d272070 100755
--- a/Config.h
+++ b/Config.h
@@ -21,7 +21,7 @@
#define MAJ_VERS 0x01
#define MIN_VERS 0x30
- #define FW_RELEASE_TAG "1.0.49"
+ #define FW_RELEASE_TAG "1.0.50"
#define MODE_HOST 0x11
#define MODE_TNC 0x12
diff --git a/Release/v1.0.45/checksums.txt b/Release/v1.0.45/checksums.txt
new file mode 100644
index 0000000..0710497
--- /dev/null
+++ b/Release/v1.0.45/checksums.txt
@@ -0,0 +1,4 @@
+e1c8ea98c20310c681940ca1f58b0c52eae3fd8a0d3f666ca578b4f404076844 rtnode_heltec_v3.bin
+295a18e9051f732d1ed211aa9d8bce45029a78543c8fc579956fee3ceb5752db rtnode_heltec_v3_merged.bin
+8059076aed056df9ee4dfcf809ba19cd8721d6e0c3e9900ca25877416d5c293c rtnode_heltec_v4.bin
+45b34190b8c7f643a4c0d6e7f73d12d41847fccee09bc80b6e2c2950a3792f76 rtnode_heltec_v4_merged.bin
diff --git a/Release/v1.0.45/rtnode_heltec_v3_merged.bin b/Release/v1.0.45/rtnode_heltec_v3_merged.bin
new file mode 100644
index 0000000..e0783f5
Binary files /dev/null and b/Release/v1.0.45/rtnode_heltec_v3_merged.bin differ
diff --git a/Release/v1.0.45/rtnode_heltec_v4_merged.bin b/Release/v1.0.45/rtnode_heltec_v4_merged.bin
new file mode 100644
index 0000000..c8381e5
Binary files /dev/null and b/Release/v1.0.45/rtnode_heltec_v4_merged.bin differ
diff --git a/Release/v1.0.46/checksums.txt b/Release/v1.0.46/checksums.txt
new file mode 100644
index 0000000..f7754e9
--- /dev/null
+++ b/Release/v1.0.46/checksums.txt
@@ -0,0 +1,4 @@
+3a364f6b6009a8c3e53c95f04fd1e603c5cc6de7145c62840de4cd8ba1aa4cf7 rtnode_heltec_v3.bin
+374ab95e4a79ed5e451eef14b762c8971509bbebdf593e0fe3690bf1b5579614 rtnode_heltec_v3_merged.bin
+8df6c128a9b4b9074287bb8bd04129dc56a1667fe2cbb2a518695e20b00b083b rtnode_heltec_v4.bin
+92947ccc47a2c8c36f314dd41621f0d546c7ef728d0c215bbc194711d9123bb3 rtnode_heltec_v4_merged.bin
diff --git a/Release/v1.0.46/rtnode_heltec_v3_merged.bin b/Release/v1.0.46/rtnode_heltec_v3_merged.bin
new file mode 100644
index 0000000..f6442f9
Binary files /dev/null and b/Release/v1.0.46/rtnode_heltec_v3_merged.bin differ
diff --git a/Release/v1.0.46/rtnode_heltec_v4_merged.bin b/Release/v1.0.46/rtnode_heltec_v4_merged.bin
new file mode 100644
index 0000000..0932f2a
Binary files /dev/null and b/Release/v1.0.46/rtnode_heltec_v4_merged.bin differ
diff --git a/Release/v1.0.48/checksums.txt b/Release/v1.0.48/checksums.txt
new file mode 100644
index 0000000..7da6222
--- /dev/null
+++ b/Release/v1.0.48/checksums.txt
@@ -0,0 +1,4 @@
+5f9bafcd6c453f8f3113009f4a57730b6ba8905b6c0550ec793839a8cc32f92c rtnode_heltec_v3.bin
+e585339ad2125bd5a182e0fa12608ce13321b80c19e1d2751e299a54e6aee850 rtnode_heltec_v3_merged.bin
+7ff42ffa40cb8723f268e547f35430e837f1fbae28091673a3be6abfa961e0a6 rtnode_heltec_v4.bin
+e6fc4550ac0e4ac5e80f232302364a1168bd2261b68b7ea392f32e624a15fc07 rtnode_heltec_v4_merged.bin
diff --git a/Release/v1.0.48/rtnode_heltec_v3_merged.bin b/Release/v1.0.48/rtnode_heltec_v3_merged.bin
new file mode 100644
index 0000000..ed8d2dc
Binary files /dev/null and b/Release/v1.0.48/rtnode_heltec_v3_merged.bin differ
diff --git a/Release/v1.0.48/rtnode_heltec_v4_merged.bin b/Release/v1.0.48/rtnode_heltec_v4_merged.bin
new file mode 100644
index 0000000..6ce5fd3
Binary files /dev/null and b/Release/v1.0.48/rtnode_heltec_v4_merged.bin differ
diff --git a/lib/microReticulum/src/Identity.cpp b/lib/microReticulum/src/Identity.cpp
index 7f2cec1..50b8a13 100755
--- a/lib/microReticulum/src/Identity.cpp
+++ b/lib/microReticulum/src/Identity.cpp
@@ -380,7 +380,11 @@ Recall last heard app_data for a destination hash.
/*static*/ bool Identity::validate_announce(const Packet& packet) {
try {
if (packet.packet_type() == Type::Packet::ANNOUNCE) {
- const size_t fixed_data_size = KEYSIZE/8 + NAME_HASH_LENGTH/8 + RANDOM_HASH_LENGTH/8 + SIGLENGTH/8;
+ const bool has_ratchet = packet.context_flag() == Type::Packet::FLAG_SET;
+ const size_t ratchet_size = has_ratchet ? RATCHETSIZE/8 : 0;
+ const size_t ratchet_offset = KEYSIZE/8 + NAME_HASH_LENGTH/8 + RANDOM_HASH_LENGTH/8;
+ const size_t signature_offset = ratchet_offset + ratchet_size;
+ const size_t fixed_data_size = signature_offset + SIGLENGTH/8;
if (packet.data().size() < fixed_data_size) {
WARNING("Received malformed announce with " + std::to_string(packet.data().size()) +
" data bytes; expected at least " + std::to_string(fixed_data_size));
@@ -394,7 +398,11 @@ Recall last heard app_data for a destination hash.
//TRACE("Identity::validate_announce: name_hash: " + name_hash.toHex());
Bytes random_hash = packet.data().mid(KEYSIZE/8 + NAME_HASH_LENGTH/8, RANDOM_HASH_LENGTH/8);
//TRACE("Identity::validate_announce: random_hash: " + random_hash.toHex());
- Bytes signature = packet.data().mid(KEYSIZE/8 + NAME_HASH_LENGTH/8 + RANDOM_HASH_LENGTH/8, SIGLENGTH/8);
+ Bytes ratchet;
+ if (has_ratchet) {
+ ratchet = packet.data().mid(ratchet_offset, ratchet_size);
+ }
+ Bytes signature = packet.data().mid(signature_offset, SIGLENGTH/8);
//TRACE("Identity::validate_announce: signature: " + signature.toHex());
Bytes app_data;
if (packet.data().size() > fixed_data_size) {
@@ -404,7 +412,7 @@ Recall last heard app_data for a destination hash.
//TRACE("Identity::validate_announce: app_data text: " + app_data.toString());
Bytes signed_data;
- signed_data << packet.destination_hash() << public_key << name_hash << random_hash+app_data;
+ signed_data << packet.destination_hash() << public_key << name_hash << random_hash << ratchet << app_data;
//TRACE("Identity::validate_announce: signed_data: " + signed_data.toHex());
if (packet.data().size() <= fixed_data_size) {
diff --git a/lib/microReticulum/src/Transport.cpp.bak b/lib/microReticulum/src/Transport.cpp.bak
new file mode 100755
index 0000000..015260a
--- /dev/null
+++ b/lib/microReticulum/src/Transport.cpp.bak
@@ -0,0 +1,4268 @@
+#include "Transport.h"
+#include "Link.h"
+
+#include "Reticulum.h"
+#include "Destination.h"
+#include "Identity.h"
+#include "Packet.h"
+#include "Interface.h"
+#include "Log.h"
+#include "Cryptography/Random.h"
+#include "Cryptography/HKDF.h"
+#include "Utilities/OS.h"
+#include "Utilities/Persistence.h"
+
+#include <algorithm>
+#include <unistd.h>
+#include <time.h>
+
+using namespace RNS;
+using namespace RNS::Type::Transport;
+using namespace RNS::Utilities;
+
+// ── Flat-map helpers (vector<pair<Bytes,T>> replaces std::map<Bytes,T>) ────
+// Eliminates per-element tree-node allocation. Linear search is fine
+// for N ≤ ~1000 on ESP32.
+
+template <typename T>
+static typename std::vector<std::pair<Bytes, T>>::iterator
+flatmap_find(std::vector<std::pair<Bytes, T>>& vec, const Bytes& key) {
+ for (auto it = vec.begin(); it != vec.end(); ++it) {
+ if (it->first == key) return it;
+ }
+ return vec.end();
+}
+
+template <typename T>
+static typename std::vector<std::pair<Bytes, T>>::const_iterator
+flatmap_find(const std::vector<std::pair<Bytes, T>>& vec, const Bytes& key) {
+ for (auto it = vec.begin(); it != vec.end(); ++it) {
+ if (it->first == key) return it;
+ }
+ return vec.end();
+}
+
+template <typename T>
+static void flatmap_upsert(std::vector<std::pair<Bytes, T>>& vec, const Bytes& key, const T& value) {
+ auto it = flatmap_find(vec, key);
+ if (it != vec.end()) {
+ it->second = value;
+ } else {
+ vec.push_back({key, value});
+ }
+}
+
+template <typename T>
+static bool flatmap_erase(std::vector<std::pair<Bytes, T>>& vec, const Bytes& key) {
+ auto it = flatmap_find(vec, key);
+ if (it != vec.end()) {
+ vec.erase(it);
+ return true;
+ }
+ return false;
+}
+
+// ── Flat-set helpers (vector<Bytes> replaces std::set<Bytes>) ──────────────
+
+static bool flatset_contains(const std::vector<Bytes>& vec, const Bytes& key) {
+ return std::find(vec.begin(), vec.end(), key) != vec.end();
+}
+
+static void flatset_insert(std::vector<Bytes>& vec, const Bytes& key) {
+ if (!flatset_contains(vec, key)) {
+ vec.push_back(key);
+ }
+}
+
+#if defined(INTERFACES_SET)
+///*static*/ std::set<std::reference_wrapper<const Interface>, std::less<const Interface>> Transport::_interfaces;
+/*static*/ std::set<std::reference_wrapper<Interface>, std::less<Interface>> Transport::_interfaces;
+#elif defined(INTERFACES_LIST)
+/*static*/ std::list<std::reference_wrapper<Interface>> Transport::_interfaces;
+#elif defined(INTERFACES_MAP)
+/*static*/ std::map<Bytes, Interface&> Transport::_interfaces;
+#endif
+#if defined(DESTINATIONS_SET)
+/*static*/ std::set<Destination> Transport::_destinations;
+#elif defined(DESTINATIONS_MAP)
+/*static*/ std::map<Bytes, Destination> Transport::_destinations;
+#endif
+/*static*/ std::set<Link> Transport::_pending_links;
+/*static*/ std::set<Link> Transport::_active_links;
+/*static*/ std::vector<Bytes> Transport::_packet_hashlist;
+/*static*/ std::vector<Bytes> Transport::_global_blobs;
+/*static*/ std::list<PacketReceipt> Transport::_receipts;
+
+/*static*/ std::map<Bytes, Transport::AnnounceEntry> Transport::_announce_table;
+/*static*/ std::map<Bytes, std::deque<Transport::PathEntry>> Transport::_destination_table;
+/*static*/ std::vector<std::pair<Bytes, Transport::ReverseEntry>> Transport::_reverse_table;
+/*static*/ std::map<Bytes, Transport::LinkEntry> Transport::_link_table;
+/*static*/ std::map<Bytes, Transport::AnnounceEntry> Transport::_held_announces;
+/*static*/ std::set<HAnnounceHandler> Transport::_announce_handlers;
+/*static*/ std::map<Bytes, Transport::TunnelEntry> Transport::_tunnels;
+/*static*/ std::vector<std::pair<Bytes, Transport::RateEntry>> Transport::_announce_rate_table;
+/*static*/ std::vector<std::pair<Bytes, double>> Transport::_path_requests;
+
+/*static*/ std::vector<std::pair<Bytes, Transport::PathRequestEntry>> Transport::_discovery_path_requests;
+/*static*/ std::set<Bytes> Transport::_discovery_pr_tags;
+
+/*static*/ std::set<Destination> Transport::_control_destinations;
+/*static*/ std::set<Bytes> Transport::_control_hashes;
+
+
+/*static*/ std::map<Bytes, Bytes> Transport::_pending_local_path_requests;
+
+/*static*/ double Transport::_start_time = 0.0;
+/*static*/ bool Transport::_jobs_locked = false;
+/*static*/ bool Transport::_jobs_running = false;
+/*static*/ float Transport::_job_interval = 0.250;
+/*static*/ double Transport::_jobs_last_run = 0.0;
+/*static*/ double Transport::_links_last_checked = 0.0;
+/*static*/ float Transport::_links_check_interval = 1.0;
+/*static*/ double Transport::_receipts_last_checked = 0.0;
+/*static*/ float Transport::_receipts_check_interval = 1.0;
+/*static*/ double Transport::_announces_last_checked = 0.0;
+/*static*/ float Transport::_announces_check_interval = 1.0;
+/*static*/ double Transport::_tables_last_culled = 0.0;
+// CBA MCU
+/*static*/ //float Transport::_tables_cull_interval = 5.0;
+/*static*/ float Transport::_tables_cull_interval = 60.0;
+/*static*/ bool Transport::_saving_path_table = false;
+// CBA ACCUMULATES
+// CBA MCU
+/*static*/ //uint16_t Transport::_hashlist_maxsize = 1000000;
+/*static*/ //uint16_t Transport::_hashlist_maxsize = 100;
+/*static*/ uint16_t Transport::_hashlist_maxsize = 100;
+// CBA ACCUMULATES
+// CBA MCU
+/*static*/ //uint16_t Transport::_max_pr_tags = 32000;
+/*static*/ uint16_t Transport::_max_pr_tags = 32;
+
+// CBA
+// CBA ACCUMULATES
+/*static*/ uint16_t Transport::_path_table_maxsize = 100;
+// CBA ACCUMULATES
+/*static*/ uint16_t Transport::_path_table_maxpersist = 100;
+/*static*/ double Transport::_last_saved = 0.0;
+/*static*/ float Transport::_save_interval = 3600.0;
+/*static*/ uint32_t Transport::_destination_table_crc = 0;
+
+/*static*/ Reticulum Transport::_owner({Type::NONE});
+
+// FIREWALL MODE Whitelist 1: addresses of local devices (from LoRa and LocalTCP interfaces)
+static std::vector<Bytes> _firewall_local_addresses;
+// FIREWALL MODE Whitelist 2: addresses mentioned in packets from local devices
+static std::vector<Bytes> _firewall_mentioned_addresses;
+static const uint16_t _firewall_maxsize = 200;
+
+// ── Whitelist helpers: enforce uniqueness on push (no per-node alloc) ──
+static void wl1_push(const Bytes& addr) {
+ if (!addr) return;
+ if (std::find(_firewall_local_addresses.begin(), _firewall_local_addresses.end(), addr)
+ == _firewall_local_addresses.end()) {
+ _firewall_local_addresses.push_back(addr);
+ }
+}
+static bool wl2_push(const Bytes& addr) {
+ if (!addr) return false;
+ if (std::find(_firewall_mentioned_addresses.begin(), _firewall_mentioned_addresses.end(), addr)
+ == _firewall_mentioned_addresses.end()) {
+ _firewall_mentioned_addresses.push_back(addr);
+ return true;
+ }
+ return false;
+}
+
+// ── Watched-destination logging ────────────────────────────────────────
+// Define WATCH_LOG to only log packets touching specific named destinations.
+// Comment out to restore full logging.
+#define WATCH_LOG
+#ifdef WATCH_LOG
+struct WatchedDest {
+ const char* name;
+ Bytes hash;
+};
+static const WatchedDest _watched[] = {
+ {"Meshchat", Bytes("\x13\xf4\xb1\x4d\xd3\x64\xa6\x72\xe8\x53\xa3\x7f\xb5\x34\x67\x8c")},
+ {"Sideband", Bytes("\x29\xf9\xa2\x0c\xb0\x47\x60\xed\xbc\x49\x7d\x66\x8c\x25\x5a\xb7")},
+ {"Browser", Bytes("\x03\x58\x19\x2f\x7b\x88\xb0\x78\x68\xe8\xd8\x32\xce\xa5\x1b\x7e")},
+};
+// Populated at runtime: ratchet hashes and link IDs → parent destination name
+static std::map<Bytes, const char*> _watch_aliases;
+
+static void watch_add_alias(const Bytes& alias, const char* name) {
+ if (alias && _watch_aliases.find(alias) == _watch_aliases.end()) {
+ _watch_aliases[alias] = name;
+ }
+}
+static const char* watch_resolve(const Bytes& addr) {
+ if (!addr) return nullptr;
+ for (auto& w : _watched) if (addr == w.hash) return w.name;
+ auto it = _watch_aliases.find(addr);
+ return (it != _watch_aliases.end()) ? it->second : nullptr;
+}
+// Check if a packet touches any watched destination; return name if so.
+static const char* watch_match(const Packet& packet) {
+ const char* n;
+ if ((n = watch_resolve(packet.destination_hash()))) return n;
+ if (packet.packet_type() == Type::Packet::LINKREQUEST) {
+ Bytes lid = Link::link_id_from_lr_packet(packet);
+ if ((n = watch_resolve(lid))) return n;
+ }
+ if (packet.data().size() >= Type::Identity::TRUNCATED_HASHLENGTH/8) {
+ if ((n = watch_resolve(packet.data().left(Type::Identity::TRUNCATED_HASHLENGTH/8)))) return n;
+ }
+ if (packet.packet_type() == Type::Packet::ANNOUNCE
+ && packet.context_flag() == Type::Packet::FLAG_SET
+ && packet.data().size() >= 116) {
+ Bytes rh = Identity::truncated_hash(packet.data().mid(84, 32));
+ if ((n = watch_resolve(rh))) return n;
+ }
+ if (packet.transport_id() && (n = watch_resolve(packet.transport_id()))) return n;
+ return nullptr;
+}
+// Helper: human-readable zone tag
+static inline const char* zone_tag(bool is_backbone) {
+ return is_backbone ? "WAN" : "LAN";
+}
+// Helper: short hash for logging
+static std::string short_hash(const Bytes& h) {
+ if (!h) return "none";
+ return h.toHex().substr(0,8);
+}
+#define WLOG(pkt, msg) do { \
+ const char* _wn = watch_match(pkt); \
+ if (_wn) { \
+ Interface _rif = pkt.receiving_interface(); \
+ bool _from_bb = _rif && is_backbone_interface(_rif); \
+ Serial.print("["); Serial.print(_wn); Serial.print("] "); \
+ Serial.printf("[%s] - FROM: %s (%s) - %s\n", \
+ pkt_type_name(pkt.packet_type()), \
+ _rif ? _rif.toString().c_str() : "?", \
+ zone_tag(_from_bb), \
+ std::string(msg).c_str()); \
+ } \
+} while(0)
+#else
+#define WLOG(fmt, ...) do {} while(0)
+#endif
+
+// FIREWALL MODE: Check if an interface is the backbone
+static bool is_backbone_interface(const Interface& iface) {
+ return iface.is_backbone();
+}
+// Human-readable packet type abbreviations
+static const char* pkt_type_name(uint8_t t) {
+ switch (t) {
+ case 0: return "DATA";
+ case 1: return "ANNC";
+ case 2: return "LREQ";
+ case 3: return "PROOF";
+ default: return "?";
+ }
+}
+/*static*/ Identity Transport::_identity({Type::NONE});
+
+// CBA
+/*static*/ Transport::Callbacks Transport::_callbacks;
+
+// CBA Stats
+/*static*/ uint32_t Transport::_packets_sent = 0;
+/*static*/ uint32_t Transport::_packets_received = 0;
+/*static*/ uint32_t Transport::_destinations_added = 0;
+/*static*/ size_t Transport::_last_memory = 0;
+/*static*/ size_t Transport::_last_flash = 0;
+
+/*static*/ void Transport::start(const Reticulum& reticulum_instance) {
+ INFO("Transport starting...");
+ _jobs_running = true;
+ _owner = reticulum_instance;
+
+ // Initialize time-based variables *after* time offset update
+ _jobs_last_run = OS::time();
+ _links_last_checked = OS::time();
+ _receipts_last_checked = OS::time();
+ _announces_last_checked = OS::time();
+ _tables_last_culled = OS::time();
+ _last_saved = OS::time();
+
+ // ensure required directories exist
+ if (!OS::directory_exists(Reticulum::_cachepath)) {
+ VERBOSE("No cache directory, creating...");
+ if (!OS::create_directory(Reticulum::_cachepath)) {
+ HEAD("Failed to create cache directory — packet cache will be unavailable", RNS::LOG_CRITICAL);
+ }
+ }
+
+ if (!_identity) {
+ char transport_identity_path[Type::Reticulum::FILEPATH_MAXSIZE];
+ snprintf(transport_identity_path, Type::Reticulum::FILEPATH_MAXSIZE, "%s/transport_identity", Reticulum::_storagepath);
+ DEBUG("Checking for transport identity...");
+ try {
+ if (OS::file_exists(transport_identity_path)) {
+ _identity = Identity::from_file(transport_identity_path);
+ }
+
+ if (!_identity) {
+ VERBOSE("No valid Transport Identity in storage, creating...");
+ _identity = Identity();
+ _identity.to_file(transport_identity_path);
+ }
+ else {
+ VERBOSE("Loaded Transport Identity from storage");
+ }
+ }
+ catch (std::exception& e) {
+ ERRORF("Failed to check for transport identity, the contained exception was: %s", e.what());
+ }
+ }
+
+// TODO
+/*
+ packet_hashlist_path = Reticulum::storagepath + "/packet_hashlist";
+ if (!owner.is_connected_to_shared_instance()) {
+ if (os.path.isfile(packet_hashlist_path)) {
+ try {
+ }
+ catch (std::exception& e) {
+ ERRORF("Could not load packet hashlist from storage, the contained exception was: %s", e.what());
+ }
+ }
+ }
+*/
+
+ // Create transport-specific destination for path request
+ Destination path_request_destination({Type::NONE}, Type::Destination::IN, Type::Destination::PLAIN, APP_NAME, "path.request");
+ path_request_destination.set_packet_callback(path_request_handler);
+ // CBA ACCUMULATES
+ _control_destinations.insert(path_request_destination);
+ // CBA ACCUMULATES
+ _control_hashes.insert(path_request_destination.hash());
+ NOTICE("PATH-REQ-DST: " + path_request_destination.hash().toHex().substr(0,8) + " — path requests to this hash will seed whitelist");
+
+ // Create transport-specific destination for tunnel synthesize
+ Destination tunnel_synthesize_destination({Type::NONE}, Type::Destination::IN, Type::Destination::PLAIN, APP_NAME, "tunnel.synthesize");
+ tunnel_synthesize_destination.set_packet_callback(tunnel_synthesize_handler);
+ // CBA BUG?
+ // CBA ACCUMULATES
+ _control_destinations.insert(tunnel_synthesize_destination);
+ // CBA ACCUMULATES
+ _control_hashes.insert(tunnel_synthesize_destination.hash());
+ DEBUG("Created transport-specific tunnel synthesize destination " + tunnel_synthesize_destination.hash().toHex());
+
+ _jobs_running = false;
+
+ // CBA Threading
+
+ if (true) {
+ INFO("Transport mode is enabled");
+
+ // Read in path table and then write and clean in case any entries are invalid
+ read_path_table();
+ DEBUG("Writing path table and cleaning caches to clean-up any orphaned paths/files");
+ write_path_table();
+ clean_caches();
+
+ read_tunnel_table();
+
+ // Create transport-specific destination for probe requests
+ if (Reticulum::probe_destination_enabled()) {
+ Destination probe_destination(_identity, Type::Destination::IN, Type::Destination::SINGLE, APP_NAME, "probe");
+ probe_destination.accepts_links(false);
+ probe_destination.set_proof_strategy(Type::Destination::PROVE_ALL);
+ DEBUG("Created probe responder destination " + probe_destination.hash().toHex());
+ probe_destination.announce();
+ NOTICE("Transport Instance will respond to probe requests on " + probe_destination.toString());
+ }
+
+ VERBOSE("Transport instance " + _identity.toString() + " started");
+ _start_time = OS::time();
+ }
+
+// TODO
+
+
+//#ifndef NDEBUG
+ // CBA DEBUG
+ dump_stats();
+//#endif
+}
+
+/*static*/ void Transport::loop() {
+ if (OS::time() > (_jobs_last_run + _job_interval)) {
+ jobs();
+ _jobs_last_run = OS::time();
+ }
+}
+
+/*static*/ void Transport::jobs() {
+ //TRACE("Transport::jobs()");
+
+ // Heap telemetry: snapshot at jobs entry
+ size_t _jobs_heap_entry = OS::heap_available();
+
+ std::vector<Packet> outgoing;
+ std::set<Bytes> path_requests;
+ int count;
+ _jobs_running = true;
+
+ try {
+ if (!_jobs_locked) {
+
+ // Process active and pending link lists
+ if (OS::time() > (_links_last_checked + _links_check_interval)) {
+ std::set<Link> pending_links(_pending_links);
+ for (auto& link : pending_links) {
+ if (link.status() == Type::Link::CLOSED) {
+ // If we are not a Transport Instance, finding a pending link
+ // that was never activated will trigger removal of the path
+ // via the link's interface, leaving backup paths intact.
+ if (false) {
+ // Remove only the path on the failed link's interface,
+ // so other paths (e.g. LoRa) survive the failure.
+ Interface failed_iface = link.attached_interface();
+ if (failed_iface) {
+ DEBUG("Removing path to " + link.destination().hash().toHex() + " via " + failed_iface.toString() + " (link closed, backup paths survive)");
+ mark_path_unresponsive(link.destination().hash(), failed_iface.get_hash());
+ } else {
+ expire_path(link.destination().hash());
+ }
+
+ // If we are connected to a shared instance, it will take
+ // care of sending out a new path request. If not, we will
+ // send one directly.
+ if (!_owner.is_connected_to_shared_instance()) {
+ double last_path_request = 0;
+ auto iter = flatmap_find(_path_requests, link.destination().hash());
+ if (iter != _path_requests.end()) {
+ last_path_request = (*iter).second;
+ }
+
+ if ((OS::time() - last_path_request) > Type::Transport::PATH_REQUEST_MI) {
+ DEBUG("Trying to rediscover path for " + link.destination().hash().toHex() + " since an attempted link was never established");
+ //if (path_requests.find(link.destination().hash()) == path_requests.end()) {
+ if (path_requests.count(link.destination().hash()) == 0) {
+ // CBA ACCUMULATES
+ path_requests.insert(link.destination().hash());
+ }
+ }
+ }
+ }
+
+ _pending_links.erase(link);
+ }
+ }
+ std::set<Link> active_links(_active_links);
+ for (auto& link : active_links) {
+ if (link.status() == Type::Link::CLOSED) {
+ _active_links.erase(link);
+ }
+ }
+
+ _links_last_checked = OS::time();
+ }
+
+ // Process receipts list for timed-out packets
+ if (OS::time() > (_receipts_last_checked + _receipts_check_interval)) {
+ while (_receipts.size() > Type::Transport::MAX_RECEIPTS) {
+ PacketReceipt culled_receipt = _receipts.front();
+ _receipts.pop_front();
+ culled_receipt.set_timeout(-1);
+ culled_receipt.check_timeout();
+ }
+
+ std::list<PacketReceipt> cull_receipts;
+ for (auto& receipt : _receipts) {
+ receipt.check_timeout();
+ if (receipt.status() != Type::PacketReceipt::SENT) {
+ cull_receipts.push_back(receipt);
+ }
+ }
+ // CBA since modifying of collection while iterating is forbidden
+ for (auto& receipt : _receipts) {
+ cull_receipts.remove(receipt);
+ }
+
+ _receipts_last_checked = OS::time();
+ }
+
+ // Process announces needing retransmission
+ if (OS::time() > (_announces_last_checked + _announces_check_interval)) {
+ DEBUG("DIAG: ANNOUNCE-TBL size=" + std::to_string(_announce_table.size()));
+ for (auto& [destination_hash, announce_entry] : _announce_table) {
+ //for (auto& pair : _announce_table) {
+ // const auto& destination_hash = pair.first;
+ // auto& announce_entry = pair.second;
+//TRACE("[0] announce entry data size: " + std::to_string(announce_entry._packet.data().size()));
+ DEBUG("DIAG: ANNOUNCE-ENTRY dest=" + destination_hash.toHex().substr(0,8) + " retries=" + std::to_string(announce_entry._retries) + " block=" + std::to_string(announce_entry._block_rebroadcasts) + " timeout_in=" + std::to_string(announce_entry._retransmit_timeout - OS::time()));
+ if (announce_entry._retries > 0 && announce_entry._retries >= Type::Transport::LOCAL_REBROADCASTS_MAX) {
+ TRACE("Completed announce processing for " + destination_hash.toHex() + ", local rebroadcast limit reached");
+ // CBA OK to modify collection here since we're immediately exiting iteration
+ _announce_table.erase(destination_hash);
+ break;
+ }
+ else if (announce_entry._retries > Type::Transport::PATHFINDER_R) {
+ DEBUG("DIAG: ANNOUNCE-CULL dest=" + destination_hash.toHex().substr(0,8) + " retries=" + std::to_string(announce_entry._retries) + " reason=retry_limit");
+ TRACE("Completed announce processing for " + destination_hash.toHex() + ", retry limit reached");
+ // CBA OK to modify collection here since we're immediately exiting iteration
+ _announce_table.erase(destination_hash);
+ break;
+ }
+ else {
+ if (OS::time() > announce_entry._retransmit_timeout) {
+ TRACE("Performing announce processing for " + destination_hash.toHex() + "...");
+ announce_entry._retransmit_timeout = OS::time() + Type::Transport::PATHFINDER_G + Type::Transport::PATHFINDER_RW;
+ announce_entry._retries += 1;
+ Type::Packet::context_types announce_context = Type::Packet::CONTEXT_NONE;
+ if (announce_entry._block_rebroadcasts) {
+ announce_context = Type::Packet::PATH_RESPONSE;
+ }
+ Identity announce_identity(Identity::recall(announce_entry._packet.destination_hash()));
+ //Destination announce_destination(announce_identity, Type::Destination::OUT, Type::Destination::SINGLE, "unknown", "unknown");
+ //announce_destination.hash(announce_entry._packet.destination_hash());
+ Destination announce_destination(announce_identity, Type::Destination::OUT, Type::Destination::SINGLE, announce_entry._packet.destination_hash());
+ //P announce_destination.hexhash = announce_destination.hash.hex()
+
+//if (announce_entry._attached_interface) {
+//TRACE("[1] interface is valid");
+//TRACE("[1] interface: " + announce_entry._attached_interface.debugString());
+//TRACE("[1] interface: " + announce_entry._attached_interface.toString());
+//}
+ Packet new_packet(
+ announce_destination,
+ //{Type::NONE},
+ announce_entry._attached_interface,
+ //{Type::NONE},
+ announce_entry._packet.data(),
+ Type::Packet::ANNOUNCE,
+ announce_context,
+ Type::Transport::TRANSPORT,
+ Type::Packet::HEADER_2,
+ Transport::_identity.hash(),
+ true,
+ announce_entry._packet.context_flag()
+ );
+
+ new_packet.hops(announce_entry._hops);
+ if (announce_entry._block_rebroadcasts) {
+ DEBUG("Rebroadcasting announce as path response for " + announce_destination.hash().toHex() + " with hop count " + std::to_string(new_packet.hops()));
+ DEBUG("DIAG: SENDING PATH-RESP announce for " + announce_destination.hash().toHex().substr(0,8) + " hops=" + std::to_string(new_packet.hops()) + " attached=" + (announce_entry._attached_interface ? announce_entry._attached_interface.toString() : "NONE"));
+ }
+ else {
+ DEBUG("Rebroadcasting announce for " + announce_destination.hash().toHex() + " with hop count " + std::to_string(new_packet.hops()));
+ }
+
+ outgoing.push_back(new_packet);
+
+ // This handles an edge case where a peer sends a past
+ // request for a destination just after an announce for
+ // said destination has arrived, but before it has been
+ // rebroadcast locally. In such a case the actual announce
+ // is temporarily held, and then reinserted when the path
+ // request has been served to the peer.
+ auto iter =_held_announces.find(destination_hash);
+ if (iter != _held_announces.end()) {
+ auto held_entry = (*iter).second;
+ _held_announces.erase(iter);
+ //_announce_table[destination_hash] = held_entry;
+ //_announce_table.insert_or_assign({destination_hash, held_entry});
+ _announce_table.erase(destination_hash);
+ // CBA ACCUMULATES
+ _announce_table.insert({destination_hash, held_entry});
+ DEBUG("Reinserting held announce into table");
+ // CBA Must break after erase to avoid iterator invalidation
+ // (same pattern as the other two erases above in this loop)
+ break;
+ }
+ }
+ }
+ }
+
+ _announces_last_checked = OS::time();
+ }
+
+ // Cull held announces that are older than 60 seconds or if map exceeds cap
+ {
+ const double held_timeout = 60.0;
+ const uint16_t held_maxsize = 32;
+ auto iter = _held_announces.begin();
+ while (iter != _held_announces.end()) {
+ if (OS::time() > ((*iter).second._timestamp + held_timeout)) {
+ DEBUG("Culling expired held announce for " + (*iter).first.toHex());
+ iter = _held_announces.erase(iter);
+ } else {
+ ++iter;
+ }
+ }
+ while (_held_announces.size() > held_maxsize) {
+ DEBUG("Culling oldest held announce (cap " + std::to_string(held_maxsize) + ")");
+ _held_announces.erase(_held_announces.begin());
+ }
+ }
+
+ // Cull the packet hashlist if it has reached its max size
+ if (_packet_hashlist.size() > _hashlist_maxsize) {
+ size_t excess = _packet_hashlist.size() - _hashlist_maxsize;
+ _packet_hashlist.erase(_packet_hashlist.begin(), _packet_hashlist.begin() + excess);
+ }
+
+#ifdef FIREWALL_MODE
+ // Cull the firewall mentioned addresses if it has reached its max size
+ if (_firewall_mentioned_addresses.size() > _firewall_maxsize) {
+ size_t excess = _firewall_mentioned_addresses.size() - _firewall_maxsize;
+ _firewall_mentioned_addresses.erase(_firewall_mentioned_addresses.begin(), _firewall_mentioned_addresses.begin() + excess);
+ }
+
+ // Cull the firewall local addresses if it has reached its max size
+ if (_firewall_local_addresses.size() > _firewall_maxsize) {
+ size_t excess = _firewall_local_addresses.size() - _firewall_maxsize;
+ _firewall_local_addresses.erase(_firewall_local_addresses.begin(), _firewall_local_addresses.begin() + excess);
+ }
+#endif
+
+ // Cull the path request tags list if it has reached its max size
+ if (_discovery_pr_tags.size() > _max_pr_tags) {
+ std::set<Bytes>::iterator iter = _discovery_pr_tags.begin();
+ std::advance(iter, _discovery_pr_tags.size() - _max_pr_tags);
+ _discovery_pr_tags.erase(_discovery_pr_tags.begin(), iter);
+ }
+
+ if (OS::time() > (_tables_last_culled + _tables_cull_interval)) {
+
+ // CBA Disabled following since we're calling immediately after adding to path table now
+ // Cull the path table if it has reached its max size
+ //cull_path_table();
+
+ // Cull the reverse table according to timeout
+ std::vector<Bytes> stale_reverse_entries;
+ for (const auto& [packet_hash, reverse_entry] : _reverse_table) {
+ if (OS::time() > (reverse_entry._timestamp + REVERSE_TIMEOUT)) {
+ stale_reverse_entries.push_back(packet_hash);
+ }
+ }
+
+ // Cull the link table according to timeout
+ std::vector<Bytes> stale_links;
+ for (const auto& [link_id, link_entry] : _link_table) {
+ if (link_entry._validated) {
+ if (OS::time() > (link_entry._timestamp + LINK_TIMEOUT)) {
+ stale_links.push_back(link_id);
+ }
+ }
+ else {
+ if (OS::time() > link_entry._proof_timeout) {
+ stale_links.push_back(link_id);
+
+ double last_path_request = 0.0;
+ const auto& iter = flatmap_find(_path_requests, link_entry._destination_hash);
+ if (iter != _path_requests.end()) {
+ last_path_request = (*iter).second;
+ }
+
+ uint8_t lr_taken_hops = link_entry._hops;
+
+ bool path_request_throttle = (OS::time() - last_path_request) < PATH_REQUEST_MI;
+ bool path_request_conditions = false;
+
+ // If the path has been invalidated between the time of
+ // making the link request and now, try to rediscover it
+ if (!has_path(link_entry._destination_hash)) {
+ DEBUG("Trying to rediscover path for " + link_entry._destination_hash.toHex() + " since an attempted link was never established, and path is now missing");
+ path_request_conditions = true;
+ }
+
+ // If this link request was originated from a local client
+ // attempt to rediscover a path to the destination, if this
+ // has not already happened recently.
+ else if (!path_request_throttle && lr_taken_hops == 0) {
+ DEBUG("Trying to rediscover path for " + link_entry._destination_hash.toHex() + " since an attempted local client link was never established");
+ path_request_conditions = true;
+ }
+
+ // If the link destination was previously only 1 hop
+ // away, this likely means that it was local to one
+ // of our interfaces, and that it roamed somewhere else.
+ // In that case, try to discover a new path.
+ else if (!path_request_throttle && hops_to(link_entry._destination_hash) == 1) {
+ DEBUG("Trying to rediscover path for " + link_entry._destination_hash.toHex() + " since an attempted link was never established, and destination was previously local to an interface on this instance");
+ path_request_conditions = true;
+ }
+
+ // If the link destination was previously only 1 hop
+ // away, this likely means that it was local to one
+ // of our interfaces, and that it roamed somewhere else.
+ // In that case, try to discover a new path.
+ else if ( !path_request_throttle and lr_taken_hops == 1) {
+ DEBUG("Trying to rediscover path for " + link_entry._destination_hash.toHex() + " since an attempted link was never established, and link initiator is local to an interface on this instance");
+ path_request_conditions = true;
+ }
+
+ if (path_request_conditions) {
+ if (path_requests.count(link_entry._destination_hash) == 0) {
+ // CBA ACCUMULATES
+ path_requests.insert(link_entry._destination_hash);
+ }
+
+ if (false) {
+ // Remove the failed outbound interface's path,
+ // leaving backup paths (e.g. LoRa) intact so
+ // select_path() falls through naturally.
+ if (link_entry._outbound_interface) {
+ DEBUG("Removing path to " + link_entry._destination_hash.toHex() + " via " + link_entry._outbound_interface.toString() + " (link establishment failed, backup paths survive)");
+ mark_path_unresponsive(link_entry._destination_hash, link_entry._outbound_interface.get_hash());
+ } else {
+ expire_path(link_entry._destination_hash);
+ }
+ }
+ }
+ }
+ }
+ }
+
+ // Cull the path table: remove expired entries and empty deques
+ std::vector<Bytes> stale_paths;
+ {
+ double now = OS::time();
+ for (auto& [destination_hash, deque] : _destination_table) {
+ // Remove expired individual entries
+ deque.erase(std::remove_if(deque.begin(), deque.end(),
+ [now](const PathEntry& e) { return e.is_expired(now); }),
+ deque.end());
+
+ // Remove entries whose interface no longer exists
+ deque.erase(std::remove_if(deque.begin(), deque.end(),
+ [](const PathEntry& e) {
+ Interface iface = find_interface_from_hash(e.receiving_interface);
+ return !iface;
+ }), deque.end());
+
+ if (deque.empty()) {
+ stale_paths.push_back(destination_hash);
+ }
+ }
+ for (const auto& destination_hash : stale_paths) {
+ _destination_table.erase(destination_hash);
+ DEBUG("Path to " + destination_hash.toHex() + " timed out and was removed");
+ }
+ }
+
+ // Cull the pending discovery path requests table
+ std::vector<Bytes> stale_discovery_path_requests;
+ for (const auto& [destination_hash, path_entry] : _discovery_path_requests) {
+ if (OS::time() > path_entry._timeout) {
+ stale_discovery_path_requests.push_back(destination_hash);
+ NOTICE("DISCOVERY-EXPIRED: path request for " + destination_hash.toHex().substr(0,8) + " timed out after " + std::to_string((int)Type::Transport::PATH_REQUEST_TIMEOUT) + "s");
+ }
+ }
+
+ // Cull the path requests table (entries only needed for PATH_REQUEST_MI throttling, 20s)
+ {
+ std::vector<Bytes> stale_path_requests;
+ for (const auto& [destination_hash, timestamp] : _path_requests) {
+ if (OS::time() > (timestamp + PATH_REQUEST_MI * 2)) {
+ stale_path_requests.push_back(destination_hash);
+ }
+ }
+ for (const Bytes& destination_hash : stale_path_requests) {
+ flatmap_erase(_path_requests, destination_hash);
+ }
+ }
+
+ // Cull pending local path requests for interfaces that no longer exist
+ {
+ std::vector<Bytes> stale_plpr;
+ for (const auto& [destination_hash, iface_hash] : _pending_local_path_requests) {
+ if (_interfaces.count(iface_hash) == 0) {
+ stale_plpr.push_back(destination_hash);
+ }
+ }
+ for (const Bytes& destination_hash : stale_plpr) {
+ _pending_local_path_requests.erase(destination_hash);
+ }
+ }
+
+ // Cull the tunnel table
+ count = 0;
+ std::vector<Bytes> stale_tunnels;
+ for (const auto& [tunnel_id, tunnel_entry] : _tunnels) {
+ if (OS::time() > tunnel_entry._expires) {
+ stale_tunnels.push_back(tunnel_id);
+ TRACE("Tunnel " + tunnel_id.toHex() + " timed out and was removed");
+ }
+ else {
+ std::vector<Bytes> stale_tunnel_paths;
+ for (const auto& [destination_hash, destination_entry] : tunnel_entry._serialised_paths) {
+ if (OS::time() > (destination_entry._timestamp + DESTINATION_TIMEOUT)) {
+ stale_tunnel_paths.push_back(destination_hash);
+ TRACE("Tunnel path to " + destination_hash.toHex() + " timed out and was removed");
+ }
+ }
+
+ //for (const auto& destination_hash : stale_tunnel_paths) {
+ for (const Bytes& destination_hash : stale_tunnel_paths) {
+ const_cast<TunnelEntry&>(tunnel_entry)._serialised_paths.erase(destination_hash);
+ ++count;
+ }
+ }
+ }
+ if (count > 0) {
+ TRACE("Removed " + std::to_string(count) + " tunnel paths");
+ }
+
+ remove_reverse_entries(stale_reverse_entries);
+ remove_links(stale_links);
+ remove_paths(stale_paths);
+ remove_discovery_path_requests(stale_discovery_path_requests);
+ remove_tunnels(stale_tunnels);
+
+//#ifndef NDEBUG
+ dump_stats();
+//#endif
+
+ _tables_last_culled = OS::time();
+ }
+
+ // CBA Periodically persist data
+ //if (OS::time() > (_last_saved + _save_interval)) {
+ // persist_data();
+ // _last_saved = OS::time();
+ //}
+ }
+ else {
+ // Transport jobs were locked, do nothing
+ }
+ }
+ catch (std::exception& e) {
+ ERROR("An exception occurred while running Transport jobs.");
+ ERRORF("The contained exception was: %s", e.what());
+ }
+
+ _jobs_running = false;
+
+ // Heap telemetry: snapshot at jobs exit (MUTED)
+ // {
+ // size_t _jobs_heap_exit = OS::heap_available();
+ // int _jobs_delta = (int)_jobs_heap_exit - (int)_jobs_heap_entry;
+ // if (_jobs_delta < -64 || _jobs_delta > 64) {
+ // VERBOSEF("[HEAP-TEL] jobs: %d bytes (heap=%u)", _jobs_delta, (uint32_t)_jobs_heap_exit);
+ // }
+ // }
+
+ // CBA send announce retransmission packets
+ for (auto& packet : outgoing) {
+ DEBUG("DIAG: OUTGOING announce dest=" + packet.destination_hash().toHex().substr(0,8) + " type=" + std::to_string(packet.packet_type()) + " ctx=" + std::to_string(packet.context()) + " attached=" + (packet.attached_interface() ? packet.attached_interface().toString() : "NONE"));
+ packet.send();
+ }
+
+ // CBA send link-related path requests
+ for (auto& destination_hash : path_requests) {
+ request_path(destination_hash);
+ }
+}
+
+/*static*/ void Transport::transmit(Interface& interface, const Bytes& raw) {
+ TRACE("Transport::transmit()");
+ // CBA
+ if (_callbacks._transmit_packet) {
+ try {
+ _callbacks._transmit_packet(raw, interface);
+ }
+ catch (std::exception& e) {
+ DEBUG("Error while executing transmit packet callback. The contained exception was: " + std::string(e.what()));
+ }
+ }
+ try {
+ //if hasattr(interface, "ifac_identity") and interface.ifac_identity != None:
+ if (interface.ifac_identity()) {
+ // Calculate packet access code by signing the raw packet
+ // and taking the last ifac_size bytes of the signature
+ Bytes signature = interface.ifac_id().sign(raw);
+ Bytes ifac = signature.right(interface.ifac_size());
+
+ // Generate mask via HKDF
+ Bytes mask = Cryptography::hkdf(
+ raw.size() + interface.ifac_size(),
+ ifac,
+ interface.ifac_key()
+ );
+
+ // Set IFAC flag in header byte 0
+ uint8_t new_header0 = raw[0] | 0x80;
+ uint8_t new_header1 = raw[1];
+
+ // Assemble new payload: new_header + ifac + raw[2:]
+ Bytes new_raw;
+ new_raw.append(new_header0);
+ new_raw.append(new_header1);
+ new_raw.append(ifac);
+ new_raw.append(raw.mid(2));
+
+ // Mask payload
+ Bytes masked_raw;
+ for (size_t i = 0; i < new_raw.size(); i++) {
+ if (i == 0) {
+ // Mask first header byte, keep IFAC flag set
+ masked_raw.append((uint8_t)((new_raw[i] ^ mask[i]) | 0x80));
+ }
+ else if (i == 1 || i > (size_t)(interface.ifac_size() + 1)) {
+ // Mask second header byte and payload
+ masked_raw.append((uint8_t)(new_raw[i] ^ mask[i]));
+ }
+ else {
+ // Don't mask the IFAC itself
+ masked_raw.append(new_raw[i]);
+ }
+ }
+
+ // Send it
+ interface.send_outgoing(masked_raw);
+ }
+ else {
+ interface.send_outgoing(raw);
+ }
+ }
+ catch (std::exception& e) {
+ ERROR("Error while transmitting on " + interface.toString() + ". The contained exception was: " + e.what());
+ }
+}
+
+/*static*/ bool Transport::outbound(Packet& packet) {
+ TRACE("Transport::outbound()");
+ ++_packets_sent;
+
+ if (!packet.destination()) {
+ //throw std::invalid_argument("Can not send packet with no destination.");
+ ERROR("Can not send packet with no destination");
+ return false;
+ }
+
+ TRACE("Transport::outbound: destination=" + packet.destination_hash().toHex() + " hops=" + std::to_string(packet.hops()));
+
+ while (_jobs_running) {
+ TRACE("Transport::outbound: sleeping...");
+ OS::sleep(0.0005);
+ }
+
+ _jobs_locked = true;
+
+ bool sent = false;
+ double outbound_time = OS::time();
+
+ // Check if we have a known path for the destination in the path table
+ if (packet.packet_type() != Type::Packet::ANNOUNCE && packet.destination().type() != Type::Destination::PLAIN && packet.destination().type() != Type::Destination::GROUP && has_path(packet.destination_hash())) {
+ // ── Multi-path hedging ───────────────────────────────────────
+ // Walk all paths in score order (best first). Each path gets
+ // the packet. If the path is stale (multi-hop transport only,
+ // hops >= 2), fire a path_request to refresh it AND continue to
+ // the next-best path so delivery isn't gated on a dead route.
+ // The first fresh path stops the hedge.
+ TRACE("Transport::outbound: Path to destination is known, hedging...");
+ std::vector<PathEntry> paths = select_all_paths(packet.destination_hash());
+ for (auto& entry : paths) {
+ uint8_t hops = entry.hops;
+ Interface outbound_interface = find_interface_from_hash(entry.receiving_interface);
+ Bytes nh = entry.next_hop;
+
+ if (!outbound_interface) continue;
+
+ // ── Build and transmit on this path ─────────────────
+ if (hops > 1) {
+ TRACE("Forwarding packet to next closest interface...");
+ if (packet.header_type() == Type::Packet::HEADER_1) {
+ uint8_t new_flags = (Type::Packet::HEADER_2) << 6 | (Type::Transport::TRANSPORT) << 4 | (packet.flags() & 0b00001111);
+ Bytes new_raw(512);
+ new_raw << new_flags;
+ new_raw << packet.raw().mid(1,1);
+ new_raw << nh;
+ new_raw << packet.raw().mid(2);
+ transmit(outbound_interface, new_raw);
+ sent = true;
+ }
+ }
+ else if (hops == 1 && _owner.is_connected_to_shared_instance()) {
+ TRACE("Transport::outbound: Sending packet for directly connected interface to shared instance...");
+ if (packet.header_type() == Type::Packet::HEADER_1) {
+ uint8_t new_flags = (Type::Packet::HEADER_2) << 6 | (Type::Transport::TRANSPORT) << 4 | (packet.flags() & 0b00001111);
+ Bytes new_raw(512);
+ new_raw << new_flags;
+ new_raw << packet.raw().mid(1, 1);
+ new_raw << nh;
+ new_raw << packet.raw().mid(2);
+ transmit(outbound_interface, new_raw);
+ sent = true;
+ }
+ }
+ else {
+ TRACE("Transport::outbound: Sending packet over directly connected interface...");
+ transmit(outbound_interface, packet.raw());
+ sent = true;
+ }
+
+ // ── Staleness check (all hops) ────────────────────
+ // Applies to ALL paths, not just multi-hop. A hops=1 path
+ // through a migrated/disconnected client will go stale and
+ // the hedge falls through to the next-best path (e.g. backbone).
+ double now = OS::time();
+ bool is_stale = ((now - entry.timestamp) > (double)Type::Transport::PATH_STALE_THRESHOLD);
+
+ if (is_stale) {
+ // Fire path_request on this path's interface to probe liveness
+ request_path(packet.destination_hash(), outbound_interface);
+
+ // Shorten expiry so dead paths don't duplicate forever
+ auto iter = _destination_table.find(packet.destination_hash());
+ if (iter != _destination_table.end()) {
+ for (auto& e : iter->second) {
+ if (e.packet_hash == entry.packet_hash) {
+ double shortened = now + (double)Type::Transport::PATH_STALE_THRESHOLD;
+ if (shortened < e.expires) {
+ e.expires = shortened;
+ }
+ break;
+ }
+ }
+ }
+ // Continue to next-best path (hedge)
+ } else {
+ // Fresh path — delivery covered, stop hedging
+ break;
+ }
+ }
+ // ── No path succeeded ─────────────────────────────────
+ if (!sent) {
+ WLOG(packet, "TO: " + short_hash(packet.destination_hash()) + " (?) - NO-PATH hops=" + std::to_string(packet.hops()) + " — all paths failed, dropped");
+ }
+ }
+ // If we don't have a known path for the destination, we'll
+ // broadcast the packet on all outgoing interfaces, or the
+ // just the relevant interface if the packet has an attached
+ // interface, or belongs to a link.
+ else {
+ TRACE("Transport::outbound: Path to destination is unknown");
+ bool stored_hash = false;
+#if defined(INTERFACES_SET)
+ for (const Interface& interface : _interfaces) {
+#elif defined(INTERFACES_LIST)
+ for (Interface& interface : _interfaces) {
+#elif defined(INTERFACES_MAP)
+ for (auto& [hash, interface] : _interfaces) {
+#endif
+ TRACE("Transport::outbound: Checking interface " + interface.toString());
+ if (interface.OUT()) {
+ bool should_transmit = true;
+
+ if (packet.destination().type() == Type::Destination::LINK) {
+ if (!packet.destination_link()) throw std::invalid_argument("Packet is not associated with a Link");
+ if (packet.destination_link().status() == Type::Link::CLOSED) {
+ TRACE("Transport::outbound: Pscket destination is link-closed, not transmitting");
+ should_transmit = false;
+ }
+ // CBA Bug? Destination has no member attached_interface
+ }
+
+ if (packet.attached_interface() && interface != packet.attached_interface()) {
+ TRACE("Transport::outbound: Packet has wrong attached interface, not transmitting");
+ should_transmit = false;
+ }
+
+ if (packet.packet_type() == Type::Packet::ANNOUNCE) {
+#ifdef FIREWALL_MODE
+ // Firewall mode: announce broadcasts are always allowed.
+ // No mode gating, no bandwidth caps — LAN announces go to
+ // every interface including WAN, and whitelisted WAN
+ // announces go to every LAN interface.
+ if (packet.attached_interface() && interface == packet.attached_interface()) {
+ // If the announce is pinned to a specific interface,
+ // only transmit on that one.
+ } else if (!packet.attached_interface()) {
+ // No attached_interface means broadcast to all.
+ } else {
+ should_transmit = false;
+ }
+#else
+ if (!packet.attached_interface()) {
+ TRACE("Transport::outbound: Packet has no attached interface");
+ if (interface.mode() == Type::Interface::MODE_ACCESS_POINT) {
+ TRACE("Blocking announce broadcast on " + interface.toString() + " due to AP mode");
+ should_transmit = false;
+ }
+ else if (interface.mode() == Type::Interface::MODE_ROAMING) {
+ //local_destination = next((d for d in Transport.destinations if d.hash == packet.destination_hash), None)
+ //Destination local_destination({Type::NONE});
+#if defined(DESTINATIONS_SET)
+ bool found_local = false;
+ for (auto& destination : _destinations) {
+ if (destination.hash() == packet.destination_hash()) {
+ //local_destination = destination;
+ found_local = true;
+ break;
+ }
+ }
+ //if local_destination != None:
+ //if (local_destination) {
+ if (found_local) {
+#elif defined(DESTINATIONS_MAP)
+ auto iter = _destinations.find(packet.destination_hash());
+ //if (iter != _destinations.end()) {
+ // local_destination = (*iter).second;
+ //}
+ if (iter != _destinations.end()) {
+#endif
+ TRACE("Allowing announce broadcast on roaming-mode interface from instance-local destination");
+ }
+ else {
+ const Interface& from_interface = next_hop_interface(packet.destination_hash());
+ //if from_interface == None or not hasattr(from_interface, "mode"):
+ if (!from_interface || from_interface.mode() == Type::Interface::MODE_NONE) {
+ should_transmit = false;
+ if (!from_interface) {
+ TRACE("Blocking announce broadcast on " + interface.toString() + " since next hop interface doesn't exist");
+ }
+ else if (from_interface.mode() == Type::Interface::MODE_NONE) {
+ TRACE("Blocking announce broadcast on " + interface.toString() + " since next hop interface has no mode configured");
+ }
+ }
+ else {
+ if (from_interface.mode() == Type::Interface::MODE_ROAMING) {
+ TRACE("Blocking announce broadcast on " + interface.toString() + " due to roaming-mode next-hop interface");
+ should_transmit = false;
+ }
+ else if (from_interface.mode() == Type::Interface::MODE_BOUNDARY) {
+ TRACE("Blocking announce broadcast on " + interface.toString() + " due to boundary-mode next-hop interface");
+ should_transmit = false;
+ }
+ }
+ }
+ }
+ else if (interface.mode() == Type::Interface::MODE_BOUNDARY) {
+ //local_destination = next((d for d in Transport.destinations if d.hash == packet.destination_hash), None)
+ // next and filter pattern?
+ // next(iterable, default)
+ // list comprehension: [x for x in xyz if x in a]
+ // CBA TODO confirm that above pattern just selects the first matching destination
+#if defined(DESTINATIONS_SET)
+ //Destination local_destination({Type::Destination::NONE});
+ bool found_local = false;
+ for (auto& destination : _destinations) {
+ if (destination.hash() == packet.destination_hash()) {
+ //local_destination = destination;
+ found_local = true;
+ break;
+ }
+ }
+ //if local_destination != None:
+ //if (local_destination) {
+ if (found_local) {
+#elif defined(DESTINATIONS_MAP)
+ auto iter = _destinations.find(packet.destination_hash());
+ if (iter != _destinations.end()) {
+#endif
+ TRACE("Allowing announce broadcast on boundary-mode interface from instance-local destination");
+ }
+ else {
+ const Interface& from_interface = next_hop_interface(packet.destination_hash());
+ if (!from_interface || from_interface.mode() == Type::Interface::MODE_NONE) {
+ should_transmit = false;
+ if (!from_interface) {
+ TRACE("Blocking announce broadcast on " + interface.toString() + " since next hop interface doesn't exist");
+ }
+ else if (from_interface.mode() == Type::Interface::MODE_NONE) {
+ TRACE("Blocking announce broadcast on " + interface.toString() + " since next hop interface has no mode configured");
+ }
+ }
+ else {
+ if (from_interface.mode() == Type::Interface::MODE_ROAMING) {
+ TRACE("Blocking announce broadcast on " + interface.toString() + " due to roaming-mode next-hop interface");
+ should_transmit = false;
+ }
+ }
+ }
+ }
+ else {
+ // Currently, annouces originating locally are always
+ // allowed, and do not conform to bandwidth caps.
+ // TODO: Rethink whether this is actually optimal.
+ if (packet.hops() > 0) {
+
+// TODO
+
+
+ bool queued_announces = (interface.announce_queue().size() > 0);
+ if (!queued_announces && outbound_time > interface.announce_allowed_at()) {
+ uint16_t wait_time = 0;
+ if (interface.bitrate() > 0 && interface.announce_cap() > 0) {
+ uint16_t tx_time = (packet.raw().size() * 8) / interface.bitrate();
+ wait_time = (tx_time / interface.announce_cap());
+ }
+#if defined(INTERFACES_SET)
+ const_cast<Interface&>(interface).announce_allowed_at(outbound_time + wait_time);
+#else
+ interface.announce_allowed_at(outbound_time + wait_time);
+#endif
+ }
+ else {
+ should_transmit = false;
+ if (interface.announce_queue().size() < Type::Reticulum::MAX_QUEUED_ANNOUNCES) {
+ bool should_queue = true;
+ for (auto& entry : interface.announce_queue()) {
+ if (entry._destination == packet.destination_hash()) {
+ uint64_t emission_timestamp = announce_emitted(packet);
+ should_queue = false;
+ if (emission_timestamp > entry._emitted) {
+ entry._time = outbound_time;
+ entry._hops = packet.hops();
+ entry._emitted = emission_timestamp;
+ entry._raw = packet.raw();
+ }
+ break;
+ }
+ }
+ if (should_queue) {
+ RNS::AnnounceEntry entry(
+ packet.destination_hash(),
+ outbound_time,
+ packet.hops(),
+ announce_emitted(packet),
+ packet.raw()
+ );
+
+ queued_announces = (interface.announce_queue().size() > 0);
+#if defined(INTERFACES_SET)
+ const_cast<Interface&>(interface).add_announce(entry);
+#else
+ // CBA ACCUMULATES
+ interface.add_announce(entry);
+#endif
+
+ if (!queued_announces) {
+ double wait_time = std::max(interface.announce_allowed_at() - OS::time(), (double)0);
+
+ // CBA TODO THREAD?
+
+ if (wait_time < 1000) {
+ TRACE("Added announce to queue (height " + std::to_string(interface.announce_queue().size()) + ") on " + interface.toString() + " for processing in " + std::to_string((int)wait_time) + " ms");
+ }
+ else {
+ TRACE("Added announce to queue (height " + std::to_string(interface.announce_queue().size()) + ") on " + interface.toString() + " for processing in " + std::to_string(OS::round(wait_time/1000,1)) + " s");
+ }
+ }
+ else {
+ double wait_time = std::max(interface.announce_allowed_at() - OS::time(), (double)0);
+ if (wait_time < 1000) {
+ TRACE("Added announce to queue (height " + std::to_string(interface.announce_queue().size()) + ") on " + interface.toString() + " for processing in " + std::to_string((int)wait_time) + " ms");
+ }
+ else {
+ TRACE("Added announce to queue (height " + std::to_string(interface.announce_queue().size()) + ") on " + interface.toString() + " for processing in " + std::to_string(OS::round(wait_time/1000,1)) + " s");
+ }
+ }
+ }
+ }
+ else {
+ }
+ }
+ }
+ else {
+ }
+ }
+ }
+#endif // FIREWALL_MODE — announce gating
+ }
+
+ if (should_transmit) {
+ TRACE("Transport::outbound: Packet transmission allowed");
+ if (packet.packet_type() == Type::Packet::ANNOUNCE) {
+ DEBUG("DIAG: TX-OUT announce dest=" + packet.destination_hash().toHex().substr(0,8) + " on " + interface.toString());
+ }
+ if (!stored_hash) {
+ // CBA ACCUMULATES
+ _packet_hashlist.push_back(packet.packet_hash());
+ stored_hash = true;
+ }
+
+ // TODO: Re-evaluate potential for blocking
+ // def send_packet():
+ // Transport.transmit(interface, packet.raw)
+ // thread = threading.Thread(target=send_packet)
+ // thread.daemon = True
+ // thread.start()
+
+#if defined(INTERFACES_SET)
+ transmit(const_cast<Interface&>(interface), packet.raw());
+#else
+ transmit(interface, packet.raw());
+#endif
+ sent = true;
+ }
+ else {
+ TRACE("Transport::outbound: Packet transmission refused");
+ if (packet.packet_type() == Type::Packet::ANNOUNCE) {
+ DEBUG("DIAG: TX-REFUSED announce dest=" + packet.destination_hash().toHex().substr(0,8) + " refused on " + interface.toString());
+ }
+ }
+ }
+ }
+ }
+
+ if (sent) {
+ packet.sent(true);
+ packet.sent_at(OS::time());
+
+ // Don't generate receipt if it has been explicitly disabled
+ if (packet.create_receipt() &&
+ // Only generate receipts for DATA packets
+ packet.packet_type() == Type::Packet::DATA &&
+ // Don't generate receipts for PLAIN destinations
+ packet.destination().type() != Type::Destination::PLAIN &&
+ // Don't generate receipts for link-related packets
+ !(packet.context() >= Type::Packet::KEEPALIVE && packet.context() <= Type::Packet::LRPROOF) &&
+ // Don't generate receipts for resource packets
+ !(packet.context() >= Type::Packet::RESOURCE && packet.context() <= Type::Packet::RESOURCE_RCL)) {
+
+ PacketReceipt receipt(packet);
+ packet.receipt(receipt);
+ // CBA ACCUMULATES
+ _receipts.push_back(receipt);
+ }
+
+ cache_packet(packet);
+ }
+
+ _jobs_locked = false;
+ return sent;
+}
+
+/*static*/ bool Transport::packet_filter(const Packet& packet) {
+ // TODO: Think long and hard about this.
+ // Is it even strictly necessary with the current
+ // transport rules?
+ if (packet.context() == Type::Packet::KEEPALIVE) {
+ return true;
+ }
+ if (packet.context() == Type::Packet::RESOURCE_REQ) {
+ return true;
+ }
+ if (packet.context() == Type::Packet::RESOURCE_PRF) {
+ return true;
+ }
+ if (packet.context() == Type::Packet::RESOURCE) {
+ return true;
+ }
+ if (packet.context() == Type::Packet::CACHE_REQUEST) {
+ return true;
+ }
+ if (packet.context() == Type::Packet::CHANNEL) {
+ return true;
+ }
+
+ if (packet.destination_type() == Type::Destination::PLAIN) {
+ if (packet.packet_type() != Type::Packet::ANNOUNCE) {
+ if (packet.hops() > 1) {
+ DEBUG("Dropped PLAIN packet " + packet.packet_hash().toHex() + " with " + std::to_string(packet.hops()) + " hops");
+ return false;
+ }
+ else {
+ return true;
+ }
+ }
+ else {
+ DEBUG("Dropped invalid PLAIN announce packet");
+ return false;
+ }
+ }
+
+ if (packet.destination_type() == Type::Destination::GROUP) {
+ if (packet.packet_type() != Type::Packet::ANNOUNCE) {
+ if (packet.hops() > 1) {
+ DEBUG("Dropped GROUP packet " + packet.packet_hash().toHex() + " with " + std::to_string(packet.hops()) + " hops");
+ return false;
+ }
+ else {
+ return true;
+ }
+ }
+ else {
+ DEBUG("Dropped invalid GROUP announce packet");
+ return false;
+ }
+ }
+
+ if (std::find(_packet_hashlist.begin(), _packet_hashlist.end(), packet.packet_hash()) == _packet_hashlist.end()) {
+ TRACE("Transport::packet_filter: packet not previously seen");
+ return true;
+ }
+ else {
+ if (packet.packet_type() == Type::Packet::ANNOUNCE) {
+ if (packet.destination_type() == Type::Destination::SINGLE) {
+ TRACE("Transport::packet_filter: packet previously seen but is SINGLE ANNOUNCE");
+ return true;
+ }
+ else {
+ DEBUG("Dropped invalid announce packet");
+ return false;
+ }
+ }
+ }
+
+ DEBUG("FILTERED duplicate packet " + packet.packet_hash().toHex().substr(0,8) + " dest=" + packet.destination_hash().toHex().substr(0,8) + " type=" + std::to_string(packet.packet_type()) + " ctx=" + std::to_string(packet.context()));
+ DEBUG("DIAG: FILTERED dup dest=" + packet.destination_hash().toHex().substr(0,8) + " type=" + std::to_string(packet.packet_type()));
+ return false;
+}
+
+/*static*/ void Transport::inbound(const Bytes& raw_in, const Interface& interface /*= {Type::NONE}*/) {
+ TRACEF("Transport::inbound: received %d bytes", raw_in.size());
+ ++_packets_received;
+
+ // Heap telemetry: snapshot at entry
+ size_t _heap_at_entry = OS::heap_available();
+ // CBA
+ if (_callbacks._receive_packet) {
+ try {
+ _callbacks._receive_packet(raw_in, interface);
+ }
+ catch (std::exception& e) {
+ DEBUG("Error while executing receive packet callback. The contained exception was: " + std::string(e.what()));
+ }
+ }
+
+ // Mutable copy of raw data for IFAC processing
+ Bytes raw = raw_in;
+
+ // If interface access codes are enabled,
+ // we must authenticate each packet.
+ if (raw.size() > 2) {
+ if (interface && interface.ifac_identity()) {
+ // Check that IFAC flag is set
+ if ((raw[0] & 0x80) == 0x80) {
+ if (raw.size() > (size_t)(2 + interface.ifac_size())) {
+ // Extract IFAC
+ Bytes ifac = raw.mid(2, interface.ifac_size());
+
+ // Generate mask
+ Bytes mask = Cryptography::hkdf(
+ raw.size(),
+ ifac,
+ interface.ifac_key()
+ );
+
+ // Unmask payload
+ Bytes unmasked_raw;
+ for (size_t i = 0; i < raw.size(); i++) {
+ if (i <= 1 || i > (size_t)(interface.ifac_size() + 1)) {
+ // Unmask header bytes and payload
+ unmasked_raw.append((uint8_t)(raw[i] ^ mask[i]));
+ }
+ else {
+ // Don't unmask IFAC itself
+ unmasked_raw.append(raw[i]);
+ }
+ }
+ raw = unmasked_raw;
+
+ // Unset IFAC flag
+ uint8_t new_header0 = raw[0] & 0x7F;
+ uint8_t new_header1 = raw[1];
+
+ // Re-assemble packet without IFAC bytes
+ Bytes new_raw;
+ new_raw.append(new_header0);
+ new_raw.append(new_header1);
+ new_raw.append(raw.mid(2 + interface.ifac_size()));
+
+ // Calculate expected IFAC
+ Bytes expected_signature = interface.ifac_id().sign(new_raw);
+ Bytes expected_ifac = expected_signature.right(interface.ifac_size());
+
+ // Check it
+ if (ifac == expected_ifac) {
+ raw = new_raw;
+ }
+ else {
+ TRACE("Transport::inbound: IFAC authentication failed, dropping packet");
+ return;
+ }
+ }
+ else {
+ TRACE("Transport::inbound: packet too short for IFAC, dropping");
+ return;
+ }
+ }
+ else {
+ // If the IFAC flag is not set, but should be, drop the packet
+ TRACE("Transport::inbound: IFAC required but flag not set, dropping packet");
+ return;
+ }
+ }
+ else {
+ // If the interface does not have IFAC enabled,
+ // check the received packet IFAC flag.
+ if ((raw[0] & 0x80) == 0x80) {
+ // If the flag is set, drop the packet
+ TRACE("Transport::inbound: IFAC flag set but interface has no IFAC, dropping packet");
+ return;
+ }
+ }
+ }
+ else {
+ return;
+ }
+
+ while (_jobs_running) {
+ TRACE("Transport::inbound: sleeping...");
+ OS::sleep(0.0005);
+ }
+
+ if (!_identity) {
+ WARNING("Transport::inbound: No identity!");
+ return;
+ }
+
+ _jobs_locked = true;
+
+ Packet packet(RNS::Destination(RNS::Type::NONE), raw);
+ if (!packet.unpack()) {
+ WARNING("Transport::inbound: Packet unpack failed!");
+ return;
+ }
+#ifndef NDEBUG
+ TRACE("Transport::inbound: packet: " + packet.debugString());
+#endif
+
+ TRACE("Transport::inbound: destination=" + packet.destination_hash().toHex() + " hops=" + std::to_string(packet.hops()));
+
+ packet.receiving_interface(interface);
+ packet.hops(packet.hops() + 1);
+
+ // Match Python reference Transport.inbound() lines 1424-1427:
+ // decrement hop count for backbone interface packets, equivalent
+ // to Python's shared-instance/local-client decrement. Without
+ // this, the backbone adds an artificial extra hop that breaks
+ // the exact-match link transport checks (==) used by the reference.
+ if (interface && interface.is_backbone()) {
+ packet.hops(packet.hops() - 1);
+ }
+
+ // Helper: determine destination zone from path table / local dests
+ auto dest_zone = [&](const Bytes& hash) -> const char* {
+ if (!hash) return "?";
+ // Check local registered destinations
+#if defined(DESTINATIONS_MAP)
+ if (_destinations.find(hash) != _destinations.end()) return "LAN";
+#elif defined(DESTINATIONS_SET)
+ for (auto& d : _destinations) { if (d.hash() == hash) return "LAN"; }
+#endif
+ // Check control hashes
+ if (_control_hashes.find(hash) != _control_hashes.end()) return "CTL";
+ // Check path table
+ if (has_path(hash)) {
+ const PathEntry* entry = select_path(hash);
+ if (entry) {
+ Interface iface = find_interface_from_hash(entry->receiving_interface);
+ if (iface && iface.is_backbone()) return "WAN";
+ return "LAN";
+ }
+ }
+ return "?";
+ };
+
+// TODO
+
+
+ //if (packet_filter(packet)) {
+ // CBA
+ bool accept = true;
+ if (_callbacks._filter_packet) {
+ try {
+ accept = _callbacks._filter_packet(packet);
+ }
+ catch (std::exception& e) {
+ DEBUG("Error while executing filter packet callback. The contained exception was: " + std::string(e.what()));
+ }
+ }
+ if (accept) {
+ accept = packet_filter(packet);
+ }
+ if (accept) {
+ TRACE("Transport::inbound: Packet accepted by filter");
+
+ // FIREWALL MODE: Comprehensive firewall for backbone traffic.
+ //
+ // Three rules:
+ // 1. Addresses that touch local interfaces (RNode/LoRa, LocalTCP)
+ // get whitelisted on the backbone interface.
+ // 2. Every packet referencing a whitelisted address — ALL identifiers
+ // in that packet also get whitelisted (link hashes, announces,
+ // requests, proofs, truncated hashes, transport IDs, EVERYTHING).
+ // 3. Everything else gets blocked on the backbone interface.
+ //
+ // 4. TRANSITIVE WHITELIST: For every packet, extract ALL
+ // identifiable addresses. If ANY address is already in a
+ // whitelist, add ALL to the secondary whitelist. This covers
+ // link IDs, ratchet IDs, transport IDs, path request targets,
+ // and announce ratchets — in both directions.
+#ifdef FIREWALL_MODE
+ {
+ bool is_backbone = is_backbone_interface(packet.receiving_interface());
+
+ // ── Extract all addresses from this packet ──────────
+ // Two tiers:
+ // TIER 1 (seed + check): user-facing destinations —
+ // dest_hash, link_id, path_req_target, announce_ratchet.
+ // These get added to WL#2 on pass.
+ // TIER 2 (check only): relay infrastructure —
+ // truncated_hash, transport_id. These can PERMIT a
+ // packet through but are NEVER added to WL#2, because
+ // they represent relay nodes, not user traffic.
+ auto wl_add = [&](const Bytes& addr, const char* tag) {
+ if (!addr) return;
+ if (_control_hashes.find(addr) != _control_hashes.end()) return;
+ if (wl2_push(addr)) {
+ NOTICE("WL#2 ADD - " + addr.toHex().substr(0,8) + " (from " + zone_tag(strcmp(tag,"backbone")==0) + ")");
+ }
+ };
+ auto wl_known = [&](const Bytes& addr) -> bool {
+ return std::find(_firewall_local_addresses.begin(), _firewall_local_addresses.end(), addr) != _firewall_local_addresses.end()
+ || std::find(_firewall_mentioned_addresses.begin(), _firewall_mentioned_addresses.end(), addr) != _firewall_mentioned_addresses.end();
+ };
+
+ // Tier 1: user-facing addresses (seeded + checked)
+ std::vector<Bytes> addrs;
+ addrs.push_back(packet.destination_hash());
+ if (packet.packet_type() == Type::Packet::LINKREQUEST) {
+ addrs.push_back(Link::link_id_from_lr_packet(packet));
+ }
+ // Path request: target destination in first 16 bytes of data
+ if (_control_hashes.find(packet.destination_hash()) != _control_hashes.end()
+ && packet.data().size() >= Type::Identity::TRUNCATED_HASHLENGTH/8) {
+ addrs.push_back(packet.data().left(Type::Identity::TRUNCATED_HASHLENGTH/8));
+ }
+ // Announce: extract ratchet ID (offset 84, 32 bytes, context_flag=FLAG_SET)
+ if (packet.packet_type() == Type::Packet::ANNOUNCE
+ && packet.context_flag() == Type::Packet::FLAG_SET
+ && packet.data().size() >= 116) {
+ Bytes ratchet_pubkey = packet.data().mid(84, 32);
+ addrs.push_back(Identity::truncated_hash(ratchet_pubkey));
+ }
+
+ // ── Watched-destination alias tracking ────────────
+ // Populate ratchet and link aliases so WLOG resolves them.
+#ifdef WATCH_LOG
+ {
+ const char* wn = watch_resolve(packet.destination_hash());
+ if (wn) {
+ if (packet.packet_type() == Type::Packet::ANNOUNCE
+ && packet.context_flag() == Type::Packet::FLAG_SET
+ && packet.data().size() >= 116) {
+ Bytes rh = Identity::truncated_hash(packet.data().mid(84, 32));
+ watch_add_alias(rh, wn);
+ }
+ if (packet.packet_type() == Type::Packet::LINKREQUEST) {
+ Bytes lid = Link::link_id_from_lr_packet(packet);
+ watch_add_alias(lid, wn);
+ }
+ }
+ }
+#endif
+
+ // Tier 2: relay infrastructure (checked, NEVER seeded)
+ std::vector<Bytes> relay_addrs;
+ if (packet.header_type() == Type::Packet::HEADER_2 && packet.transport_id()) {
+ relay_addrs.push_back(packet.transport_id());
+ }
+ // Note: getTruncatedHash() is NOT included — it's a
+ // per-packet content hash, not a node identity. It can
+ // never match a whitelist entry and seeding it wastes a
+ // WL#2 slot with garbage.
+
+ // ── Transitive match: any Tier 1 or Tier 2 address known? ──
+ bool any_known = false;
+ for (auto& a : addrs) {
+ if (wl_known(a)) { any_known = true; break; }
+ }
+ if (!any_known) {
+ for (auto& a : relay_addrs) {
+ if (wl_known(a)) { any_known = true; break; }
+ }
+ }
+
+ if (is_backbone) {
+ // === BACKBONE PACKET ===
+ // Proofs are responses to traffic we already forwarded.
+ // They carry no source/destination identity — just a
+ // packet body hash. Exempt from whitelist; the reverse
+ // table handles routing, and forged proofs fail signature
+ // validation downstream.
+ if (packet.packet_type() == Type::Packet::PROOF) {
+ WLOG(packet, "TO: " + short_hash(packet.destination_hash()) + " (" + dest_zone(packet.destination_hash()) + ") - WL-PASS PROOF exempt hops=" + std::to_string(packet.hops()) + " sz=" + std::to_string(packet.raw().size()));
+ // Fall through to reverse-table routing below
+ }
+ // Only allowed if at least one address in the packet is
+ // already whitelisted (WL#1 or WL#2). No other gates.
+ else if (!any_known) {
+ WLOG(packet, "TO: " + short_hash(packet.destination_hash()) + " (" + dest_zone(packet.destination_hash()) + ") - WL-BLOCK hops=" + std::to_string(packet.hops()) + " sz=" + std::to_string(packet.raw().size()));
+ return;
+ }
+ // Transitive: add all addresses to WL#2
+ for (auto& a : addrs) { wl_add(a, "backbone"); }
+ WLOG(packet, "TO: " + short_hash(packet.destination_hash()) + " (" + dest_zone(packet.destination_hash()) + ") - WL-PASS hops=" + std::to_string(packet.hops()) + " sz=" + std::to_string(packet.raw().size()));
+ }
+ else {
+ // === LOCAL DEVICE PACKET ===
+ // Always whitelist ALL addresses from local packets.
+ // Local devices are trusted; their traffic seeds the
+ // secondary whitelist for return traffic from WAN.
+ for (auto& a : addrs) { wl_add(a, "local"); }
+ WLOG(packet, "TO: " + short_hash(packet.destination_hash()) + " (" + dest_zone(packet.destination_hash()) + ") - WL-PASS hops=" + std::to_string(packet.hops()) + " sz=" + std::to_string(packet.raw().size()));
+ }
+ }
+#endif
+
+ // Heap telemetry: snapshot after firewall filter (MUTED)
+ // {
+ // size_t _heap_after_boundary = OS::heap_available();
+ // int _boundary_delta = (int)_heap_after_boundary - (int)_heap_at_entry;
+ // if (_boundary_delta < -64) {
+ // VERBOSEF("[HEAP-TEL] firewall: %d bytes (bma=%u phl=%u)", _boundary_delta, _firewall_mentioned_addresses.size(), _packet_hashlist.size());
+ // }
+ // }
+
+ // By default, remember packet hashes to avoid routing
+ // loops in the network, using the packet filter.
+ bool remember_packet_hash = true;
+
+ // If this packet belongs to a link in our link table,
+ // we'll have to defer adding it to the filter list.
+ // In some cases, we might see a packet over a shared-
+ // medium interface, belonging to a link that transports
+ // or terminates with this instance, but before it would
+ // normally reach us. If the packet is appended to the
+ // filter list at this point, link transport will break.
+ if (_link_table.find(packet.destination_hash()) != _link_table.end()) {
+ remember_packet_hash = false;
+ }
+
+ // If this is a link request proof, don't add it until
+ // we are sure it's not actually somewhere else in the
+ // routing chain.
+ if (packet.packet_type() == Type::Packet::PROOF && packet.context() == Type::Packet::LRPROOF) {
+ remember_packet_hash = false;
+ }
+
+ if (remember_packet_hash) {
+ // CBA ACCUMULATES
+ _packet_hashlist.push_back(packet.packet_hash());
+ }
+ cache_packet(packet);
+
+#ifdef FIREWALL_MODE
+ // Log ALL non-announce packets arriving from local (non-backbone) interfaces
+ if (!is_backbone_interface(packet.receiving_interface()) && packet.packet_type() != Type::Packet::ANNOUNCE) {
+ WLOG(packet, "TO: " + short_hash(packet.destination_hash()) + " (" + dest_zone(packet.destination_hash()) + ") - LAN-IN hops=" + std::to_string(packet.hops()) + " sz=" + std::to_string(packet.raw().size()));
+ }
+#endif
+
+ // Firewall mode: no local-client distinction. All devices are
+ // either LAN (non-backbone) or WAN (backbone).
+ const bool from_local_client = false;
+ const bool for_local_client = false;
+ const bool for_local_client_link = false;
+ const bool proof_for_local_client = false;
+
+ // Transport is always enabled in firewall mode
+ const bool transport_active = true;
+
+ // If packet is not destined for a local transport-specific destination
+ if (_control_hashes.find(packet.destination_hash()) == _control_hashes.end()) {
+ // PLAIN BROADCAST: delivered to all interfaces
+ if (packet.destination_type() == Type::Destination::PLAIN && packet.transport_type() == Type::Transport::BROADCAST) {
+#if defined(INTERFACES_SET)
+ for (const Interface& interface : _interfaces) {
+#elif defined(INTERFACES_LIST)
+ for (Interface& interface : _interfaces) {
+#elif defined(INTERFACES_MAP)
+ for (auto& [hash, interface] : _interfaces) {
+#endif
+ if (interface != packet.receiving_interface()) {
+ TRACE("Transport::inbound: Broadcasting packet on " + interface.toString());
+#if defined(INTERFACES_SET)
+ transmit(const_cast<Interface&>(interface), packet.raw());
+#else
+ transmit(interface, packet.raw());
+#endif
+ }
+ }
+ }
+ }
+
+ ////////////////////////////////
+ // TRANSPORT HANDLING
+ ////////////////////////////////
+
+ // General transport handling (always active in firewall mode)
+ {
+ TRACE("Transport::inbound: Performing general transport handling");
+
+ // If this is a cache request, and we can fullfill
+ // it, do so and stop processing. Otherwise resume
+ // normal processing.
+ if (packet.context() == Type::Packet::CACHE_REQUEST) {
+ if (cache_request_packet(packet)) {
+ TRACE("Transport::inbound: Cached packet");
+ return;
+ }
+ }
+
+ // If the packet is in transport, check whether we
+ // are the designated next hop, and process it
+ // accordingly if we are.
+ if (packet.transport_id() && packet.packet_type() != Type::Packet::ANNOUNCE) {
+ TRACE("Transport::inbound: Packet is in transport...");
+ if (packet.transport_id() == _identity.hash()) {
+ TRACE("Transport::inbound: We are designated next-hop");
+ if (has_path(packet.destination_hash())) {
+ TRACE("Transport::inbound: Found next-hop path to destination");
+ const PathEntry* entry = select_path(packet.destination_hash());
+ if (!entry) {
+ TRACE("Got packet in transport, but selected path expired. Dropping packet.");
+ return;
+ }
+ Bytes next_hop = entry->next_hop;
+ uint8_t remaining_hops = entry->hops;
+
+ // CBA RESERVE
+ //Bytes new_raw;
+ Bytes new_raw(512);
+ if (remaining_hops > 1) {
+ // Just increase hop count and transmit
+ //new_raw = packet.raw[0:1]
+ new_raw << packet.raw().left(1);
+ //new_raw += struct.pack("!B", packet.hops)
+ new_raw << packet.hops();
+ //new_raw += next_hop
+ new_raw << next_hop;
+ //new_raw += packet.raw[(RNS.Identity.TRUNCATED_HASHLENGTH//8)+2:]
+ new_raw << packet.raw().mid((Type::Identity::TRUNCATED_HASHLENGTH/8)+2);
+ }
+ else if (remaining_hops == 1) {
+ // Strip transport headers and transmit
+ //new_flags = (RNS.Packet.HEADER_1) << 6 | (Transport.BROADCAST) << 4 | (packet.flags & 0b00001111)
+ uint8_t new_flags = (Type::Packet::HEADER_1) << 6 | (Type::Transport::BROADCAST) << 4 | (packet.flags() & 0b00001111);
+ //new_raw = struct.pack("!B", new_flags)
+ new_raw << new_flags;
+ //new_raw += struct.pack("!B", packet.hops)
+ new_raw << packet.hops();
+ //new_raw += packet.raw[(RNS.Identity.TRUNCATED_HASHLENGTH//8)+2:]
+ new_raw << packet.raw().mid((Type::Identity::TRUNCATED_HASHLENGTH/8)+2);
+ }
+ else if (remaining_hops == 0) {
+ // Just increase hop count and transmit
+ //new_raw = packet.raw[0:1]
+ new_raw << packet.raw().left(1);
+ //new_raw += struct.pack("!B", packet.hops)
+ new_raw << packet.hops();
+ //new_raw += packet.raw[2:]
+ new_raw << packet.raw().mid(2);
+ }
+
+ Interface outbound_interface = find_interface_from_hash(entry->receiving_interface);
+
+#ifdef FIREWALL_MODE
+ // In firewall mode, never route a packet from backbone back to backbone.
+ // The upstream server sent us this packet because we are the next hop,
+ // so the destination must be on our local side.
+ if (is_backbone_interface(packet.receiving_interface()) && is_backbone_interface(outbound_interface)) {
+ // Path table incorrectly points to backbone. Skip forwarding.
+ }
+ else
+#endif
+ {
+ if (packet.packet_type() == Type::Packet::LINKREQUEST) {
+ TRACE("Transport::inbound: Packet is next-hop LINKREQUEST");
+ double now = OS::time();
+ double proof_timeout = now + Type::Link::ESTABLISHMENT_TIMEOUT_PER_HOP * std::max((uint8_t)1, remaining_hops);
+
+ // === MTU Clamping (v1.0.12) ===
+ // When forwarding a LINKREQUEST through this transport node,
+ // clamp the link MTU signalling to min(prev-hop, next-hop)
+ // interface HW_MTU. Without this, endpoints negotiate a
+ // segment size that exceeds this node's buffer capacity,
+ // causing silent truncation and resource transfer stalls.
+ uint16_t path_mtu = Link::mtu_from_lr_packet(packet);
+ if (path_mtu > 0) {
+ uint16_t ph_mtu = packet.receiving_interface().HW_MTU();
+ uint16_t nh_mtu = outbound_interface.HW_MTU();
+ if (nh_mtu == 0) {
+ DEBUG("MTU CLAMP: No next-hop HW MTU, stripping link MTU signalling");
+ new_raw = new_raw.left(new_raw.size() - Type::Link::LINK_MTU_SIZE);
+ } else if (!outbound_interface.AUTOCONFIGURE_MTU() && !outbound_interface.FIXED_MTU()) {
+ DEBUG("MTU CLAMP: Outbound interface doesn't support MTU config, stripping link MTU signalling");
+ new_raw = new_raw.left(new_raw.size() - Type::Link::LINK_MTU_SIZE);
+ } else {
+ if (nh_mtu < path_mtu || (ph_mtu > 0 && ph_mtu < path_mtu)) {
+ uint16_t clamped = std::min(nh_mtu, (ph_mtu > 0) ? ph_mtu : nh_mtu);
+ RNS::Type::Link::link_mode mode = Link::mode_from_lr_packet(packet);
+ Bytes clamped_mtu_bytes = Link::signalling_bytes(clamped, mode);
+ new_raw = new_raw.left(new_raw.size() - Type::Link::LINK_MTU_SIZE) + clamped_mtu_bytes;
+ DEBUGF("MTU CLAMP: path=%u ph=%u nh=%u -> clamped=%u", path_mtu, ph_mtu, nh_mtu, clamped);
+ }
+ }
+ }
+
+ LinkEntry link_entry(
+ now,
+ next_hop,
+ outbound_interface,
+ remaining_hops,
+ packet.receiving_interface(),
+ packet.hops(),
+ packet.destination_hash(),
+ false,
+ proof_timeout
+ );
+ // CBA ACCUMULATES
+ _link_table.insert({Link::link_id_from_lr_packet(packet), link_entry});
+ }
+ else {
+ TRACE("Transport::inbound: Packet is next-hop other type");
+ ReverseEntry reverse_entry(
+ packet.receiving_interface(),
+ outbound_interface,
+ OS::time()
+ );
+ // CBA ACCUMULATES
+ Bytes th = packet.getTruncatedHash();
+ flatmap_erase(_reverse_table, th); _reverse_table.push_back({th, reverse_entry});
+ wl2_push(th);
+ }
+ TRACE("Transport::outbound: Sending packet to next hop...");
+ WLOG(packet, "TO: " + short_hash(packet.destination_hash()) + " (" + dest_zone(packet.destination_hash()) + ") - FWD: " + outbound_interface.toString() + " (" + zone_tag(is_backbone_interface(outbound_interface)) + ") transport hops=" + std::to_string(remaining_hops));
+#if defined(INTERFACES_SET)
+ transmit(const_cast<Interface&>(outbound_interface), new_raw);
+#else
+ transmit(outbound_interface, new_raw);
+#endif
+ // Update timestamp on the selected path entry
+ {
+ auto iter = _destination_table.find(packet.destination_hash());
+ if (iter != _destination_table.end()) {
+ for (auto& e : iter->second) {
+ if (e.packet_hash == entry->packet_hash) {
+ e.timestamp = OS::time();
+ break;
+ }
+ }
+ }
+ }
+ } // firewall mode else
+ }
+ else {
+#ifdef FIREWALL_MODE
+ // No path to destination. Link_ids are handled by the
+ // link transport section below — only request a path
+ // for locally-originated packets to unknown destinations.
+ {
+ bool from_backbone = is_backbone_interface(packet.receiving_interface());
+ if (!from_backbone && _link_table.find(packet.destination_hash()) == _link_table.end()) {
+ WLOG(packet, "TO: " + short_hash(packet.destination_hash()) + " (" + dest_zone(packet.destination_hash()) + ") - NO-PATH next-hop, requesting");
+ request_path(packet.destination_hash(), packet.receiving_interface());
+ }
+ }
+#else
+ TRACE("Got packet in transport, but no known path to final destination " + packet.destination_hash().toHex() + ". Dropping packet.");
+#endif
+ }
+ }
+ else {
+ TRACE("Transport::inbound: We are not designated next-hop so not transporting");
+ }
+ }
+ else {
+ TRACE("Transport::inbound: Either packet is announce or packet has no next-hop (possibly for a local destination)");
+#ifdef FIREWALL_MODE
+ // FIREWALL MODE: If this packet came from a local interface and we
+ // have a path to the destination, wrap it with transport headers
+ // and forward it through the backbone as the first transport hop.
+ // Skip ANNOUNCE and PROOF packets — announces have their own handling,
+ // and link proofs (LRPROOF) are handled by the LRPROOF transport code.
+ // Also skip packets destined for locally-registered destinations
+ // (e.g. path request handler) — those must be processed locally.
+ bool is_local_destination = false;
+#if defined(DESTINATIONS_MAP)
+ is_local_destination = (_destinations.find(packet.destination_hash()) != _destinations.end());
+#elif defined(DESTINATIONS_SET)
+ for (auto& dest : _destinations) {
+ if (dest.hash() == packet.destination_hash()) { is_local_destination = true; break; }
+ }
+#endif
+ NOTICE("FWD-CHECK - FROM: " + packet.receiving_interface().toString() + " (" + zone_tag(is_backbone_interface(packet.receiving_interface())) + ") TO: " + short_hash(packet.destination_hash()) + " (" + dest_zone(packet.destination_hash()) + ") " + (is_local_destination ? "LOCAL" : "FWD"));
+ if (is_local_destination) {
+ NOTICE("SKIP-FWD - TO: " + short_hash(packet.destination_hash()) + " is local dest");
+ }
+ // Forward link proofs (delivery confirmations on established links)
+ if (!is_local_destination && packet.packet_type() == Type::Packet::PROOF) {
+ auto link_it = _link_table.find(packet.destination_hash());
+ if (link_it != _link_table.end()) {
+ LinkEntry& le = (*link_it).second;
+ Interface out_iface = find_interface_from_hash(le._outbound_interface.get_hash());
+ NOTICE("[PROOF] - FROM: " + packet.receiving_interface().toString() + " (" + zone_tag(is_backbone_interface(packet.receiving_interface())) + ") - TO: " + short_hash(packet.destination_hash()) + " (" + dest_zone(packet.destination_hash()) + ") - FWD: " + (out_iface ? out_iface.toString() : "?") + " (" + (out_iface ? zone_tag(is_backbone_interface(out_iface)) : "?") + ") LINK-PROOF");
+ if (out_iface) transmit(out_iface, packet.raw());
+ }
+ }
+ if (!is_local_destination && packet.packet_type() != Type::Packet::ANNOUNCE && packet.packet_type() != Type::Packet::PROOF) {
+ bool is_from_backbone = is_backbone_interface(packet.receiving_interface());
+ if (!is_from_backbone) {
+ const PathEntry* entry = select_path(packet.destination_hash());
+ if (entry) {
+ Interface outbound_interface = find_interface_from_hash(entry->receiving_interface);
+ NOTICE("[" + std::string(pkt_type_name(packet.packet_type())) + "] - FROM: " + packet.receiving_interface().toString() + " (" + zone_tag(is_backbone_interface(packet.receiving_interface())) + ") - TO: " + short_hash(packet.destination_hash()) + " (" + dest_zone(packet.destination_hash()) + ") - FWD: " + (outbound_interface ? outbound_interface.toString() : "?") + " (" + (outbound_interface ? zone_tag(is_backbone_interface(outbound_interface)) : "?") + ") hops=" + std::to_string(entry->hops));
+ if (!outbound_interface) {
+ // Path entry references an interface that no longer exists
+ // (e.g. after reboot with persistent path table).
+ // Request a fresh path instead of crashing.
+ DEBUG(" Saved path entry has stale interface hash — requesting fresh path");
+ request_path(packet.destination_hash());
+ return;
+ }
+ Bytes next_hop = entry->next_hop;
+ uint8_t remaining_hops = entry->hops;
+
+ // Build outgoing packet based on remaining hops,
+ // mirroring standard transport forwarding logic.
+ Bytes new_raw(512);
+ if (remaining_hops > 1) {
+ // Multi-hop: wrap with HEADER_2/TRANSPORT,
+ // setting transport_id = next_hop (the next
+ // transport node's identity hash from announce).
+ uint8_t new_flags = (Type::Packet::HEADER_2) << 6
+ | (Type::Transport::TRANSPORT) << 4
+ | (packet.flags() & 0b00001111);
+ new_raw << new_flags;
+ new_raw << packet.hops();
+ new_raw << next_hop; // insert transport_id
+ new_raw << packet.raw().mid(2); // destination_hash + payload
+ }
+ else {
+ // Single hop (remaining_hops <= 1): destination is
+ // directly reachable. Send as HEADER_1/BROADCAST
+ // (no transport header), matching standard transport
+ // behaviour for final-hop delivery.
+ uint8_t new_flags = (Type::Packet::HEADER_1) << 6
+ | (Type::Transport::BROADCAST) << 4
+ | (packet.flags() & 0b00001111);
+ new_raw << new_flags;
+ new_raw << packet.hops();
+ new_raw << packet.raw().mid(2); // destination_hash + payload
+ }
+
+ // Create link_table or reverse_table entry for return path
+ if (packet.packet_type() == Type::Packet::LINKREQUEST) {
+ double now = OS::time();
+ double proof_timeout = now + Type::Link::ESTABLISHMENT_TIMEOUT_PER_HOP
+ * std::max((uint8_t)1, remaining_hops);
+
+ // === MTU Clamping (v1.0.12) ===
+ uint16_t path_mtu = Link::mtu_from_lr_packet(packet);
+ if (path_mtu > 0) {
+ uint16_t ph_mtu = packet.receiving_interface().HW_MTU();
+ uint16_t nh_mtu = outbound_interface.HW_MTU();
+ if (nh_mtu == 0) {
+ new_raw = new_raw.left(new_raw.size() - Type::Link::LINK_MTU_SIZE);
+ } else if (!outbound_interface.AUTOCONFIGURE_MTU() && !outbound_interface.FIXED_MTU()) {
+ new_raw = new_raw.left(new_raw.size() - Type::Link::LINK_MTU_SIZE);
+ } else if (nh_mtu < path_mtu || (ph_mtu > 0 && ph_mtu < path_mtu)) {
+ uint16_t clamped = std::min(nh_mtu, (ph_mtu > 0) ? ph_mtu : nh_mtu);
+ RNS::Type::Link::link_mode mode = Link::mode_from_lr_packet(packet);
+ Bytes clamped_mtu_bytes = Link::signalling_bytes(clamped, mode);
+ new_raw = new_raw.left(new_raw.size() - Type::Link::LINK_MTU_SIZE) + clamped_mtu_bytes;
+ DEBUGF("MTU CLAMP: local->backbone path=%u ph=%u nh=%u -> %u", path_mtu, ph_mtu, nh_mtu, clamped);
+ }
+ }
+
+ LinkEntry link_entry(
+ now, next_hop, outbound_interface, remaining_hops,
+ packet.receiving_interface(), packet.hops(),
+ packet.destination_hash(), false, proof_timeout
+ );
+ // Each LINKREQUEST gets its own entry (unique link_id)
+ _link_table.insert({Link::link_id_from_lr_packet(packet), link_entry});
+ }
+ else {
+ ReverseEntry reverse_entry(
+ packet.receiving_interface(), outbound_interface, OS::time()
+ );
+ Bytes th = packet.getTruncatedHash();
+ flatmap_erase(_reverse_table, th); _reverse_table.push_back({th, reverse_entry});
+ // Whitelist the truncated hash so the return proof
+ // from the backbone isn't blocked by the firewall.
+ wl2_push(th);
+ }
+
+ DEBUG(" Forwarding local packet (" + std::to_string(remaining_hops) + " hops, " + std::to_string(new_raw.size()) + " bytes) to " + outbound_interface.toString() + " for " + packet.destination_hash().toHex());
+ transmit(outbound_interface, new_raw);
+ // Update timestamp on selected path entry
+ {
+ auto iter = _destination_table.find(packet.destination_hash());
+ if (iter != _destination_table.end()) {
+ for (auto& e : iter->second) {
+ if (e.packet_hash == entry->packet_hash) {
+ e.timestamp = OS::time();
+ break;
+ }
+ }
+ }
+ }
+ }
+ else {
+ // Only request path if the destination is not a link_id
+ // (link data packets are handled by link transport below,
+ // not by standard transport path lookup).
+ if (_link_table.find(packet.destination_hash()) == _link_table.end()) {
+ WLOG(packet, "TO: " + short_hash(packet.destination_hash()) + " (" + dest_zone(packet.destination_hash()) + ") - NO-PATH requesting");
+ request_path(packet.destination_hash(), packet.receiving_interface());
+ }
+ }
+ }
+ else {
+ // FIREWALL MODE REVERSE: Packet came from backbone,
+ // check if destination is a local LoRa device and forward it.
+ if (std::find(_firewall_local_addresses.begin(), _firewall_local_addresses.end(), packet.destination_hash()) != _firewall_local_addresses.end()) {
+ const PathEntry* entry2 = select_path(packet.destination_hash());
+ if (entry2) {
+ Bytes next_hop2 = entry2->next_hop;
+ uint8_t remaining_hops2 = entry2->hops;
+ Interface outbound_interface2 = find_interface_from_hash(entry2->receiving_interface);
+
+ // Build properly routed packet based on remaining hops,
+ // mirroring the standard transport forwarding logic.
+ Bytes new_raw(512);
+ if (remaining_hops2 > 1) {
+ // Multi-hop: wrap with HEADER_2/TRANSPORT
+ uint8_t new_flags = (Type::Packet::HEADER_2) << 6
+ | (Type::Transport::TRANSPORT) << 4
+ | (packet.flags() & 0b00001111);
+ new_raw << new_flags;
+ new_raw << packet.hops();
+ new_raw << next_hop2; // transport_id
+ new_raw << packet.raw().mid(2); // destination_hash + payload
+ }
+ else {
+ // Direct or single-hop: send as HEADER_1
+ new_raw << packet.raw().left(1);
+ new_raw << packet.hops();
+ new_raw << packet.raw().mid(2);
+ }
+
+ // Create link_table or reverse_table entry for return traffic
+ if (packet.packet_type() == Type::Packet::LINKREQUEST) {
+ double now = OS::time();
+ double proof_timeout = now + Type::Link::ESTABLISHMENT_TIMEOUT_PER_HOP
+ * std::max((uint8_t)1, remaining_hops2);
+
+ // === MTU Clamping (v1.0.12) ===
+ uint16_t path_mtu = Link::mtu_from_lr_packet(packet);
+ if (path_mtu > 0) {
+ uint16_t ph_mtu = packet.receiving_interface().HW_MTU();
+ uint16_t nh_mtu = outbound_interface2.HW_MTU();
+ if (nh_mtu == 0) {
+ new_raw = new_raw.left(new_raw.size() - Type::Link::LINK_MTU_SIZE);
+ } else if (!outbound_interface2.AUTOCONFIGURE_MTU() && !outbound_interface2.FIXED_MTU()) {
+ new_raw = new_raw.left(new_raw.size() - Type::Link::LINK_MTU_SIZE);
+ } else if (nh_mtu < path_mtu || (ph_mtu > 0 && ph_mtu < path_mtu)) {
+ uint16_t clamped = std::min(nh_mtu, (ph_mtu > 0) ? ph_mtu : nh_mtu);
+ RNS::Type::Link::link_mode mode = Link::mode_from_lr_packet(packet);
+ Bytes clamped_mtu_bytes = Link::signalling_bytes(clamped, mode);
+ new_raw = new_raw.left(new_raw.size() - Type::Link::LINK_MTU_SIZE) + clamped_mtu_bytes;
+ DEBUGF("MTU CLAMP: backbone->local path=%u ph=%u nh=%u -> %u", path_mtu, ph_mtu, nh_mtu, clamped);
+ }
+ }
+
+ LinkEntry link_entry(
+ now, next_hop2, outbound_interface2, remaining_hops2,
+ packet.receiving_interface(), packet.hops(),
+ packet.destination_hash(), false, proof_timeout
+ );
+ _link_table.insert({Link::link_id_from_lr_packet(packet), link_entry});
+ DEBUG(" Created link_table entry for backbone LINKREQUEST, link_id=" + Link::link_id_from_lr_packet(packet).toHex());
+ }
+ else {
+ ReverseEntry reverse_entry(
+ packet.receiving_interface(), outbound_interface2, OS::time()
+ );
+ flatmap_erase(_reverse_table, packet.getTruncatedHash()); _reverse_table.push_back({packet.getTruncatedHash(), reverse_entry});
+ }
+
+ DEBUG(" Forwarding backbone packet (" + std::to_string(remaining_hops2) + " hops) to local device for " + packet.destination_hash().toHex() + " via " + outbound_interface2.toString());
+ transmit(outbound_interface2, new_raw);
+ // Update timestamp on selected path entry
+ {
+ auto iter = _destination_table.find(packet.destination_hash());
+ if (iter != _destination_table.end()) {
+ for (auto& e : iter->second) {
+ if (e.packet_hash == entry2->packet_hash) {
+ e.timestamp = OS::time();
+ break;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+#endif
+ }
+
+ // Link transport handling. Directs packets according
+ // to entries in the link tables
+ if (packet.packet_type() != Type::Packet::ANNOUNCE && packet.packet_type() != Type::Packet::LINKREQUEST && packet.context() != Type::Packet::LRPROOF) {
+ TRACE("Transport::inbound: Checking if packet is meant for link transport...");
+ auto link_iter = _link_table.find(packet.destination_hash());
+ if (link_iter != _link_table.end()) {
+ LinkEntry& link_entry = (*link_iter).second;
+ NOTICE("LINK-XPORT: pkt " + packet.destination_hash().toHex().substr(0,8) + " type=" + std::to_string(packet.packet_type()) + " ctx=" + std::to_string(packet.context()) + " hops=" + std::to_string(packet.hops()) + " from=" + packet.receiving_interface().toString() + " sz=" + std::to_string(packet.raw().size()));
+ NOTICE("LINK-XPORT: entry hops=" + std::to_string(link_entry._hops) + " rem=" + std::to_string(link_entry._remaining_hops) + " recv=" + link_entry._receiving_interface.toString() + " out=" + link_entry._outbound_interface.toString() + " val=" + std::to_string(link_entry._validated));
+ // If receiving and outbound interface is
+ // the same for this link, direction doesn't
+ // matter, and we simply send the packet on.
+ Interface outbound_interface({Type::NONE});
+ if (link_entry._outbound_interface == link_entry._receiving_interface) {
+ // But check that taken hops matches one
+ // of the expectede values.
+ if (packet.hops() == link_entry._remaining_hops || packet.hops() == link_entry._hops) {
+ TRACE("Transport::inbound: Link inbound/outbound interfaes are same, transporting on same interface");
+ outbound_interface = link_entry._outbound_interface;
+ }
+ }
+ else {
+ // If interfaces differ, we transmit on
+ // the opposite interface of what the
+ // packet was received on.
+ if (packet.receiving_interface() == link_entry._outbound_interface) {
+ // Reverse direction (from destination back toward initiator).
+ // In an asymmetric topology (e.g. boundary node) the return
+ // path may have fewer hops than the forward path. Require
+ // at most _remaining_hops to preserve anti-spoofing.
+ if (packet.hops() <= link_entry._remaining_hops) {
+ outbound_interface = link_entry._receiving_interface;
+ }
+ else {
+ NOTICE("LINK-XPORT: HOP MISMATCH (from outbound) pkt.hops=" + std::to_string(packet.hops()) + " max=" + std::to_string(link_entry._remaining_hops));
+ }
+ }
+ else if (packet.receiving_interface() == link_entry._receiving_interface) {
+ // Also check that expected hop count matches
+ if (packet.hops() == link_entry._hops) {
+ outbound_interface = link_entry._outbound_interface;
+ }
+ else {
+ NOTICE("LINK-XPORT: HOP MISMATCH (from receiving) pkt.hops=" + std::to_string(packet.hops()) + " expected=" + std::to_string(link_entry._hops));
+ }
+ }
+ else {
+ NOTICE("LINK-XPORT: IFACE MISMATCH recv=" + packet.receiving_interface().toString() + " entry_recv=" + link_entry._receiving_interface.toString() + " entry_out=" + link_entry._outbound_interface.toString());
+ }
+ }
+
+ if (outbound_interface) {
+ NOTICE("LINK-XPORT: FWD to " + outbound_interface.toString());
+ // Add this packet to the filter hashlist now that
+ // we have determined it's actually our turn to
+ // process it (matching Python Transport line 1544).
+ _packet_hashlist.push_back(packet.packet_hash());
+ // CBA RESERVE
+ //Bytes new_raw;
+ Bytes new_raw(512);
+ //new_raw = packet.raw[0:1]
+ new_raw << packet.raw().left(1);
+ //new_raw += struct.pack("!B", packet.hops)
+ new_raw << packet.hops();
+ //new_raw += packet.raw[2:]
+ new_raw << packet.raw().mid(2);
+ transmit(outbound_interface, new_raw);
+ link_entry._timestamp = OS::time();
+ }
+ else {
+ NOTICE("LINK-XPORT: DROPPED (no outbound interface resolved)");
+ }
+ }
+ else {
+ NOTICE("LINK-XPORT: dest " + packet.destination_hash().toHex().substr(0,8) + " NOT in link_table (size=" + std::to_string(_link_table.size()) + ")");
+ }
+ }
+ }
+
+ ////////////////////////////////
+ // LOCAL HANDLING
+ ////////////////////////////////
+
+ // Announce handling. Handles logic related to incoming
+ // announces, queueing rebroadcasts of these, and removal
+ // of queued announce rebroadcasts once handed to the next node.
+ if (packet.packet_type() == Type::Packet::ANNOUNCE) {
+ TRACE("Transport::inbound: Packet is ANNOUNCE");
+ DEBUG("DIAG: ANNOUNCE-IN dest=" + packet.destination_hash().toHex().substr(0,8) + " iface=" + packet.receiving_interface().toString() + " hops=" + std::to_string(packet.hops()));
+ Bytes received_from;
+#if defined(DESTINATIONS_SET)
+ //Destination local_destination({Type::NONE});
+ bool found_local = false;
+ for (auto& destination : _destinations) {
+ if (destination.hash() == packet.destination_hash()) {
+ //local_destination = destination;
+ found_local = true;
+ break;
+ }
+ }
+ //if local_destination == None and RNS.Identity.validate_announce(packet):
+ //if (!local_destination && Identity::validate_announce(packet)) {
+ if (!found_local && Identity::validate_announce(packet)) {
+#elif defined(DESTINATIONS_MAP)
+ auto iter = _destinations.find(packet.destination_hash());
+ if (iter == _destinations.end() && Identity::validate_announce(packet)) {
+#endif
+ TRACE("Transport::inbound: Packet is announce for non-local destination, processing...");
+ if (packet.transport_id()) {
+ received_from = packet.transport_id();
+
+ // Check if this is a next retransmission from
+ // another node. If it is, we're removing the
+ // announce in question from our pending table
+ if (Reticulum::transport_enabled() && _announce_table.count(packet.destination_hash()) > 0) {
+ //AnnounceEntry& announce_entry = _announce_table[packet.destination_hash()];
+ AnnounceEntry& announce_entry = (*_announce_table.find(packet.destination_hash())).second;
+
+ if ((packet.hops() - 1) == announce_entry._hops) {
+ DEBUG("Heard a local rebroadcast of announce for " + packet.destination_hash().toHex());
+ announce_entry._local_rebroadcasts += 1;
+ if (announce_entry._local_rebroadcasts >= LOCAL_REBROADCASTS_MAX) {
+ DEBUG("Max local rebroadcasts of announce for " + packet.destination_hash().toHex() + " reached, dropping announce from our table");
+ _announce_table.erase(packet.destination_hash());
+ }
+ }
+
+ if ((packet.hops() - 1) == (announce_entry._hops + 1) && announce_entry._retries > 0) {
+ double now = OS::time();
+ if (now < announce_entry._timestamp) {
+ DEBUG("Rebroadcasted announce for " + packet.destination_hash().toHex() + " has been passed on to another node, no further tries needed");
+ _announce_table.erase(packet.destination_hash());
+ }
+ }
+ }
+ }
+ else {
+ received_from = packet.destination_hash();
+ }
+
+ // Check if this announce should be inserted into
+ // announce and destination tables
+ bool should_add = false;
+
+ // First, check that the announce is not for a destination
+ // local to this system, and that hops are less than the max
+ // CBA TODO determine why packet destination hash is being searched in destinations again since we entered this logic becuase it did not exist above
+ //if (not any(packet.destination_hash == d.hash for d in Transport.destinations) and packet.hops < Transport.PATHFINDER_M+1):
+#if defined(DESTINATIONS_SET)
+ bool found_local = false;
+ for (auto& destination : _destinations) {
+ if (destination.hash() == packet.destination_hash()) {
+ found_local = true;
+ break;
+ }
+ }
+ if (!found_local && packet.hops() < (PATHFINDER_M+1)) {
+#elif defined(DESTINATIONS_MAP)
+ auto iter = _destinations.find(packet.destination_hash());
+ if (iter == _destinations.end() && packet.hops() < (PATHFINDER_M+1)) {
+#endif
+ // ── Multi-Path Path Table Insertion ──────────────────────
+ // 2 leaf outcomes instead of 11: replay check only.
+ // All valid announces coexist; select_path() picks best at forwarding time.
+ Bytes random_blob = packet.data().mid(Type::Identity::KEYSIZE/8 + Type::Identity::NAME_HASH_LENGTH/8, Type::Identity::RANDOM_HASH_LENGTH/8);
+
+ // Step 1: Anti-replay via global blob set
+ if (std::find(_global_blobs.begin(), _global_blobs.end(), random_blob) != _global_blobs.end()) {
+ should_add = false;
+ } else {
+ should_add = true;
+ _global_blobs.push_back(random_blob);
+ // Cap global_blobs at MAX_GLOBAL_BLOBS (FIFO eviction)
+ if (_global_blobs.size() > MAX_GLOBAL_BLOBS) {
+ _global_blobs.erase(_global_blobs.begin());
+ }
+ }
+
+ // NOTE: The boundary-mode announce echo blocking that was here
+ // has been removed. The standard random_blob check above
+ // already prevents echoes (same blob = same announce bounced
+ // through backbone). Removing the boundary-specific blocking
+ // allows:
+ // 1. Local TCP clients to receive backbone announces for
+ // destinations that also have LoRa paths.
+ // 2. The V3 destination table to contain the backbone path
+ // when it is equal-or-better, enabling correct transport
+ // routing for TCP client LINKREQUESTs.
+ // LoRa-originated announces that arrive first will still be
+ // preferred (equal hops = first-arrival wins via random_blob),
+ // until the next re-announce cycle changes the path.
+
+ if (should_add) {
+ double now = OS::time();
+
+ bool rate_blocked = false;
+
+// TODO
+
+
+ uint8_t retries = 0;
+ uint8_t announce_hops = packet.hops();
+ uint8_t local_rebroadcasts = 0;
+ bool block_rebroadcasts = false;
+ Interface attached_interface = {Type::NONE};
+
+ double retransmit_timeout = now + (Cryptography::random() * PATHFINDER_RW);
+
+ double expires = now + PATHFINDER_E;
+
+ // ── Multi-Path Insertion ────────────────────────────
+ // 1. Build PathEntry from announce fields
+ // 2. Dedup within dest by packet_hash
+ // 3. Push front (newest-first), truncate to MAX_PATHS_PER_DEST
+
+ TRACE("Caching packet " + packet.get_hash().toHex());
+ if (RNS::Transport::cache_packet(packet, true)) {
+ packet.cached(true);
+ }
+ TRACE("Adding destination " + packet.destination_hash().toHex() + " to path table");
+
+ PathEntry new_entry(
+ now,
+ received_from,
+ announce_hops,
+ expires,
+ packet.receiving_interface().get_hash(),
+ packet.get_hash()
+ );
+
+ auto& deque = _destination_table[packet.destination_hash()];
+ bool is_new_dest = deque.empty();
+
+ // Remove any existing entry with the same packet_hash (same announce)
+ deque.erase(std::remove_if(deque.begin(), deque.end(),
+ [&new_entry](const PathEntry& e) {
+ return e.packet_hash == new_entry.packet_hash;
+ }), deque.end());
+
+ // Prepend newest entry
+ deque.push_front(new_entry);
+
+ // Cap at MAX_PATHS_PER_DEST
+ while (deque.size() > MAX_PATHS_PER_DEST) {
+ deque.pop_back();
+ }
+
+ if (is_new_dest) {
+ ++_destinations_added;
+ cull_path_table();
+ }
+
+ // ── Announce table insertion / retransmission ──────
+ // In firewall mode, every announce (LAN or whitelisted WAN)
+ // gets rebroadcast to all interfaces. No DISCOVERY_ADD
+ // dependency — announces propagate naturally.
+#ifdef FIREWALL_MODE
+ if (packet.context() != Type::Packet::PATH_RESPONSE) {
+#else
+ if (Reticulum::transport_enabled() && packet.context() != Type::Packet::PATH_RESPONSE) {
+#endif
+ if (rate_blocked) {
+ DEBUG("Blocking rebroadcast of announce from " + packet.destination_hash().toHex() + " due to excessive announce rate");
+ }
+ else {
+ // attached_interface stays NONE in firewall mode:
+ // the announce will be broadcast to ALL interfaces,
+ // not just the one it arrived on.
+ AnnounceEntry announce_entry(
+ now,
+ retransmit_timeout,
+ retries,
+ received_from,
+ announce_hops,
+ packet,
+ local_rebroadcasts,
+ block_rebroadcasts,
+ attached_interface
+ );
+ _announce_table.erase(packet.destination_hash());
+ _announce_table.insert({packet.destination_hash(), announce_entry});
+ }
+ }
+
+ DEBUG("Destination " + packet.destination_hash().toHex() + " is now " + std::to_string(announce_hops) + " hops away via " + received_from.toHex() + " on " + packet.receiving_interface().toString());
+ DEBUG("DIAG: STORED path " + packet.destination_hash().toHex().substr(0,8) + " hops=" + std::to_string(announce_hops) + " iface=" + packet.receiving_interface().toString());
+
+ // FIREWALL MODE: Register destinations seen via non-backbone interfaces (Whitelist 1)
+#ifdef FIREWALL_MODE
+ {
+ bool is_backbone = is_backbone_interface(packet.receiving_interface());
+ if (!is_backbone) {
+ wl1_push(packet.destination_hash());
+ NOTICE("WL#1 ADD - " + packet.destination_hash().toHex().substr(0,8) + " (from LAN)");
+ }
+ }
+#endif
+ //TRACE("Transport::inbound: Destination " + packet.destination_hash().toHex() + " has data: " + packet.data().toHex());
+ //TRACE("Transport::inbound: Destination " + packet.destination_hash().toHex() + " has text: " + packet.data().toString());
+
+// TODO
+/*
+ // If the receiving interface is a tunnel, we add the
+ // announce to the tunnels table
+ if (packet.receiving_interface().tunnel_id()) {
+ tunnel_entry = Transport.tunnels[packet.receiving_interface.tunnel_id];
+ paths = tunnel_entry[2];
+ paths[packet.destination_hash] = destination_table_entry;
+ expires = OS::time() + Transport::DESTINATION_TIMEOUT;
+ tunnel_entry[3] = expires;
+ DEBUG("Path to " + packet.destination_hash().toHex() + " associated with tunnel " + packet.receiving_interface().tunnel_id().toHex());
+ }
+*/
+
+ // Call externally registered callbacks from apps
+ // wanting to know when an announce arrives
+ if (packet.context() != Type::Packet::PATH_RESPONSE) {
+ TRACE("Transport::inbound: Not path response, sending to announce handler...");
+ for (auto& handler : _announce_handlers) {
+ TRACE("Transport::inbound: Checking filter of announce handler...");
+ try {
+ // Check that the announced destination matches
+ // the handlers aspect filter
+ bool execute_callback = false;
+ Identity announce_identity(Identity::recall(packet.destination_hash()));
+ if (handler->aspect_filter().empty()) {
+ // If the handlers aspect filter is set to
+ // None, we execute the callback in all cases
+ execute_callback = true;
+ }
+ else {
+ Bytes handler_expected_hash = Destination::hash_from_name_and_identity(handler->aspect_filter().c_str(), announce_identity);
+ if (packet.destination_hash() == handler_expected_hash) {
+ execute_callback = true;
+ }
+ }
+ if (execute_callback) {
+ // CBA TODO Why does app data come from recall instead of from this announce packet?
+ handler->received_announce(
+ packet.destination_hash(),
+ announce_identity,
+ Identity::recall_app_data(packet.destination_hash())
+ );
+ }
+ }
+ catch (std::exception& e) {
+ ERROR("Error while processing external announce callback.");
+ ERRORF("The contained exception was: %s", e.what());
+ }
+ }
+ }
+ }
+ }
+ else {
+ TRACE("Transport::inbound: Packet is announce for local destination, not processing");
+ }
+ }
+ else {
+ TRACE("Transport::inbound: Packet is announce for local destination, not processing");
+ }
+ }
+
+ // Handling for link requests to local destinations
+ else if (packet.packet_type() == Type::Packet::LINKREQUEST) {
+ WLOG(packet, "TO: " + short_hash(packet.destination_hash()) + " (" + dest_zone(packet.destination_hash()) + ") - LINKREQ-IN");
+ if (!packet.transport_id() || packet.transport_id() == _identity.hash()) {
+ TRACE("Transport::inbound: Checking if LINKREQUEST is for local destination");
+ bool found_local = false;
+#if defined(DESTINATIONS_SET)
+ for (auto& destination : _destinations) {
+ if (destination.hash() == packet.destination_hash() && destination.type() == packet.destination_type()) {
+#elif defined(DESTINATIONS_MAP)
+ auto iter = _destinations.find(packet.destination_hash());
+ if (iter != _destinations.end()) {
+ auto& destination = (*iter).second;
+ if (destination.type() == packet.destination_type()) {
+#endif
+ TRACE("Transport::inbound: Found local destination for LINKREQUEST");
+ packet.destination(destination);
+ found_local = true;
+#if defined(DESTINATIONS_SET)
+ const_cast<Destination&>(destination).receive(packet);
+#else
+ destination.receive(packet);
+#endif
+ }
+ }
+#ifdef FIREWALL_MODE
+ // Forward non-local link requests from non-backbone to backbone
+ if (!found_local && !is_backbone_interface(packet.receiving_interface())) {
+ // Match Python: use the path table to find the correct
+ // outbound interface, not broadcast to all backbones.
+ Interface outbound_iface({Type::NONE});
+ if (has_path(packet.destination_hash())) {
+ const PathEntry* entry = select_path(packet.destination_hash());
+ if (entry) {
+ outbound_iface = find_interface_from_hash(entry->receiving_interface);
+ }
+ }
+ // Fallback: use first connected backbone interface
+ if (!outbound_iface) {
+ for (auto& [hash, iface] : _interfaces) {
+ if (is_backbone_interface(iface)) {
+ outbound_iface = iface;
+ break;
+ }
+ }
+ }
+ WLOG(packet, "TO: " + short_hash(packet.destination_hash()) + " (" + dest_zone(packet.destination_hash()) + ") - FWD: " + outbound_iface.toString() + " (" + zone_tag(is_backbone_interface(outbound_iface)) + ") LINKREQ");
+ if (outbound_iface && outbound_iface != packet.receiving_interface()) {
+ double now = OS::time();
+ uint8_t actual_hops = 1;
+ if (has_path(packet.destination_hash())) {
+ actual_hops = hops_to(packet.destination_hash());
+ if (actual_hops < 1) actual_hops = 1;
+ }
+ LinkEntry link_entry(now, packet.destination_hash(), outbound_iface, actual_hops,
+ packet.receiving_interface(), packet.hops(),
+ packet.destination_hash(), false,
+ now + (Type::Link::ESTABLISHMENT_TIMEOUT_PER_HOP * actual_hops));
+ Bytes link_id = Link::link_id_from_lr_packet(packet);
+ _link_table.erase(link_id);
+ _link_table.insert({link_id, link_entry});
+ wl2_push(link_id);
+ transmit(outbound_iface, packet.raw());
+ }
+ }
+#endif
+ }
+ }
+
+ // Handling for data packets to local destinations
+ else if (packet.packet_type() == Type::Packet::DATA) {
+ TRACE("Transport::inbound: Packet is DATA");
+ if (packet.destination_type() == Type::Destination::LINK) {
+ // Data is destined for a link
+ TRACE("Transport::inbound: Packet is DATA for a LINK");
+ std::set<Link> active_links(_active_links);
+ for (auto& link : active_links) {
+ if (link.link_id() == packet.destination_hash()) {
+ TRACE("Transport::inbound: Packet is DATA for an active LINK");
+ packet.link(link);
+ const_cast<Link&>(link).receive(packet);
+ }
+ }
+ }
+ else {
+ // Data is basic (not destined for a link)
+#if defined(DESTINATIONS_SET)
+ for (auto& destination : _destinations) {
+ if (destination.hash() == packet.destination_hash() && destination.type() == packet.destination_type()) {
+#elif defined(DESTINATIONS_MAP)
+ auto iter = _destinations.find(packet.destination_hash());
+ if (iter != _destinations.end()) {
+ // Data is for a local destination
+ WLOG(packet, "TO: " + short_hash(packet.destination_hash()) + " (" + dest_zone(packet.destination_hash()) + ") - LAN-DELIVER");
+ auto& destination = (*iter).second;
+ if (destination.type() == packet.destination_type()) {
+ TRACE("Transport::inbound: Packet destination type " + std::to_string(packet.destination_type()) + " matched, processing");
+#endif
+ packet.destination(destination);
+#if defined(DESTINATIONS_SET)
+ const_cast<Destination&>(destination).receive(packet);
+#else
+ destination.receive(packet);
+#endif
+
+ if (destination.proof_strategy() == Type::Destination::PROVE_ALL) {
+ packet.prove();
+ }
+ else if (destination.proof_strategy() == Type::Destination::PROVE_APP) {
+ if (destination.callbacks()._proof_requested) {
+ try {
+ if (destination.callbacks()._proof_requested(packet)) {
+ packet.prove();
+ }
+ }
+ catch (std::exception& e) {
+ ERROR(std::string("Error while executing proof request callback. The contained exception was: ") + e.what());
+ }
+ }
+ }
+ }
+ else {
+ DEBUG("Transport::inbound: Packet destination type " + std::to_string(packet.destination_type()) + " mismatch, ignoring");
+ }
+ }
+ else {
+ DEBUG("Transport::inbound: Local destination " + packet.destination_hash().toHex() + " not found, not handling packet locally");
+ }
+ }
+ }
+
+ // Handling for proofs and link-request proofs
+ else if (packet.packet_type() == Type::Packet::PROOF) {
+ TRACE("Transport::inbound: Packet is PROOF");
+ if (packet.context() == Type::Packet::LRPROOF) {
+ TRACE("Transport::inbound: Packet is LINK PROOF");
+ // This is a link request proof, check if it
+ // needs to be transported
+ if ((true) && _link_table.find(packet.destination_hash()) != _link_table.end()) {
+ DEBUG("LRPROOF-XPORT: handling proof for link " + packet.destination_hash().toHex().substr(0,8));
+ LinkEntry& link_entry = (*_link_table.find(packet.destination_hash())).second;
+ WLOG(packet, "TO: " + short_hash(packet.destination_hash()) + " (" + dest_zone(packet.destination_hash()) + ") - FWD: " + link_entry._receiving_interface.toString() + " (" + zone_tag(is_backbone_interface(link_entry._receiving_interface)) + ") LRPROOF");
+ DEBUG("LRPROOF-XPORT: recv_iface=" + packet.receiving_interface().toString() + " entry_out=" + link_entry._outbound_interface.toString() + " entry_recv=" + link_entry._receiving_interface.toString());
+
+ bool interface_match = (packet.receiving_interface() == link_entry._outbound_interface);
+ if (interface_match) {
+ try {
+ size_t expected_size = (Type::Identity::SIGLENGTH/8 + Type::Link::ECPUBSIZE/2);
+ size_t expected_size_with_mtu = expected_size + Type::Link::LINK_MTU_SIZE;
+ if (packet.data().size() == expected_size || packet.data().size() == expected_size_with_mtu) {
+ Bytes signalling_bytes;
+ if (packet.data().size() == expected_size_with_mtu) {
+ signalling_bytes = Link::signalling_bytes(Link::mtu_from_lp_packet(packet), Link::mode_from_lp_packet(packet));
+ }
+
+ Bytes peer_pub_bytes = packet.data().mid(Type::Identity::SIGLENGTH/8, Type::Link::ECPUBSIZE/2);
+ Identity peer_identity = Identity::recall(link_entry._destination_hash);
+ if (!peer_identity) {
+ WLOG(packet, "TO: " + short_hash(link_entry._destination_hash) + " (" + dest_zone(link_entry._destination_hash) + ") - LRPROOF-FAIL: no identity in cache");
+ }
+ else {
+ DEBUG("LRPROOF-XPORT: peer identity recalled for " + link_entry._destination_hash.toHex().substr(0,8));
+ Bytes peer_sig_pub_bytes = peer_identity.get_public_key().mid(Type::Link::ECPUBSIZE/2, Type::Link::ECPUBSIZE/2);
+
+ Bytes signed_data = packet.destination_hash() + peer_pub_bytes + peer_sig_pub_bytes + signalling_bytes;
+ Bytes signature = packet.data().left(Type::Identity::SIGLENGTH/8);
+
+ if (peer_identity.validate(signature, signed_data)) {
+ DEBUG("LRPROOF-XPORT: VALIDATED, forwarding to " + link_entry._receiving_interface.toString());
+ // CBA RESERVE
+ //Bytes new_raw = packet.raw().left(1);
+ Bytes new_raw(512);
+ new_raw << packet.raw().left(1);
+ new_raw << packet.hops();
+ new_raw << packet.raw().mid(2);
+ DEBUG("LRPROOF-XPORT: new_raw size=" + std::to_string(new_raw.size()) + " hops=" + std::to_string(packet.hops()) + " flags=0x" + new_raw.left(1).toHex() + " dest=" + new_raw.mid(2, 10).toHex().substr(0,16));
+ link_entry._validated = true;
+ transmit(link_entry._receiving_interface, new_raw);
+ DEBUG("LRPROOF-XPORT: transmit() returned OK");
+ }
+ else {
+ WLOG(packet, "TO: " + short_hash(packet.destination_hash()) + " (" + dest_zone(packet.destination_hash()) + ") - LRPROOF-FAIL: invalid signature");
+ }
+ } // end peer_identity valid
+ }
+ else {
+ WLOG(packet, "TO: " + short_hash(packet.destination_hash()) + " (" + dest_zone(packet.destination_hash()) + ") - LRPROOF-FAIL: bad size " + std::to_string(packet.data().size()) + " expected " + std::to_string(expected_size));
+ }
+ }
+ catch (std::exception& e) {
+ WLOG(packet, "TO: " + short_hash(packet.destination_hash()) + " (" + dest_zone(packet.destination_hash()) + ") - LRPROOF-FAIL: " + std::string(e.what()));
+ }
+ }
+ else {
+ WLOG(packet, "TO: " + short_hash(packet.destination_hash()) + " (" + dest_zone(packet.destination_hash()) + ") - LRPROOF-FAIL: iface mismatch");
+ }
+ }
+ else {
+ // Not in link_table or transport not enabled — check
+ // if we can deliver it to a local pending link
+ NOTICE("[PROOF] - TO: " + short_hash(packet.destination_hash()) + " (" + dest_zone(packet.destination_hash()) + ") - LRPROOF-DROP not in link_table (lt=" + std::to_string(_link_table.size()) + " pl=" + std::to_string(_pending_links.size()) + ")");
+ // CBA Must make a copy of _pending_links before traversing since it gets modified
+ //for (auto link : _pending_links) {
+ std::set<Link> pending_links(_pending_links);
+ for (auto& link : pending_links) {
+ TRACEF("Checking for link request handling by pending link %s", link.link_id().toHex().c_str());
+ if (link.link_id() == packet.destination_hash()) {
+ TRACE("Requesting pending link to validate proof");
+ const_cast<Link&>(link).validate_proof(packet);
+ }
+ }
+ }
+ }
+ else if (packet.context() == Type::Packet::RESOURCE_PRF) {
+ TRACE("Transport::inbound: Packet is RESOURCE PROOF");
+ std::set<Link> active_links(_active_links);
+ for (auto& link : active_links) {
+ if (link.link_id() == packet.destination_hash()) {
+ const_cast<Link&>(link).receive(packet);
+ }
+ }
+ }
+ else {
+ TRACE("Transport::inbound: Packet is regular PROOF");
+ if (packet.destination_type() == Type::Destination::LINK) {
+ std::set<Link> active_links(_active_links);
+ for (auto& link : active_links) {
+ if (link.link_id() == packet.destination_hash()) {
+ packet.link(link);
+ }
+ }
+ }
+
+ Bytes proof_hash;
+ if (packet.data().size() == Type::PacketReceipt::EXPL_LENGTH) {
+ proof_hash = packet.data().left(Type::Identity::HASHLENGTH/8);
+ }
+
+ // Check if this proof needs to be transported
+ if ((true) && flatmap_find(_reverse_table, packet.destination_hash()) != _reverse_table.end()) {
+ ReverseEntry reverse_entry = (*flatmap_find(_reverse_table, packet.destination_hash())).second;
+ NOTICE("[PROOF] - FROM: " + packet.receiving_interface().toString() + " (" + zone_tag(is_backbone_interface(packet.receiving_interface())) + ") - TO: " + short_hash(packet.destination_hash()) + " (" + dest_zone(packet.destination_hash()) + ") - FWD: " + reverse_entry._receiving_interface.toString() + " (" + zone_tag(is_backbone_interface(reverse_entry._receiving_interface)) + ") REV");
+ if (packet.receiving_interface() == reverse_entry._outbound_interface) {
+ TRACE("Proof received on correct interface, transporting it via " + reverse_entry._receiving_interface.toString());
+ // CBA RESERVE
+ //Bytes new_raw = packet.raw().left(1);
+ Bytes new_raw(512);
+ new_raw << packet.raw().left(1);
+ new_raw << packet.hops();
+ new_raw << packet.raw().mid(2);
+ transmit(reverse_entry._receiving_interface, new_raw);
+ }
+ else {
+ DEBUG("Proof received on wrong interface, not transporting it.");
+ }
+ }
+ else {
+ NOTICE("[PROOF] - TO: " + short_hash(packet.destination_hash()) + " (" + dest_zone(packet.destination_hash()) + ") - NO-REV cannot forward");
+ }
+
+ std::list<PacketReceipt> cull_receipts;
+ for (auto& receipt : _receipts) {
+ bool receipt_validated = false;
+ if (proof_hash) {
+ // Only test validation if hash matches
+ if (receipt.hash() == proof_hash) {
+ receipt_validated = receipt.validate_proof_packet(packet);
+ }
+ }
+ else {
+ // TODO: This looks like it should actually
+ // be rewritten when implicit proofs are added.
+
+ // In case of an implicit proof, we have
+ // to check every single outstanding receipt
+ receipt_validated = receipt.validate_proof_packet(packet);
+ }
+
+ // CBA TODO requires modifying of collection while iterating which is forbidden
+ if (receipt_validated) {
+ cull_receipts.push_back(receipt);
+ }
+ }
+ // CBA since modifying of collection while iterating is forbidden
+ for (auto& receipt : _receipts) {
+ cull_receipts.remove(receipt);
+ }
+ }
+ }
+ }
+
+ // Heap telemetry: snapshot at exit (MUTED)
+ // {
+ // size_t _heap_at_exit = OS::heap_available();
+ // int _inbound_delta = (int)_heap_at_exit - (int)_heap_at_entry;
+ // static uint32_t _tel_pkt_count = 0;
+ // ++_tel_pkt_count;
+ // if (_inbound_delta < -64 || (_tel_pkt_count % 100 == 0)) {
+ // VERBOSEF("[HEAP-TEL] inbound: %d bytes (heap=%u pin=%u bma=%u phl=%u lt=%u revr=%u)",
+ // _inbound_delta, (uint32_t)_heap_at_exit, _packets_received,
+ // _firewall_mentioned_addresses.size(), _packet_hashlist.size(),
+ // _link_table.size(), _reverse_table.size());
+ // }
+ // }
+
+ _jobs_locked = false;
+}
+
+/*static*/ void Transport::synthesize_tunnel(const Interface& interface) {
+// TODO
+
+}
+
+/*static*/ void Transport::tunnel_synthesize_handler(const Bytes& data, const Packet& packet) {
+// TODO
+
+}
+
+/*static*/ void Transport::handle_tunnel(const Bytes& tunnel_id, const Interface& interface) {
+// TODO
+
+}
+
+/*static*/ void Transport::register_interface(Interface& interface) {
+ TRACE("Transport: Registering interface " + interface.get_hash().toHex() + " " + interface.toString());
+#if defined(INTERFACES_SET)
+ _interfaces.insert(interface);
+#elif defined(INTERFACES_LIST)
+ _interfaces.push_back(interface);
+#elif defined(INTERFACES_MAP)
+ _interfaces.insert({interface.get_hash(), interface});
+#endif
+ // CBA TODO set or add transport as listener on interface to receive incoming packets?
+}
+
+/*static*/ void Transport::deregister_interface(const Interface& interface) {
+ TRACE("Transport: Deregistering interface " + interface.toString());
+#if defined(INTERFACES_SET)
+ //for (auto iter = _interfaces.begin(); iter != _interfaces.end(); ++iter) {
+ // if ((*iter).get() == interface) {
+ // _interfaces.erase(iter);
+ // TRACE("Transport::deregister_interface: Found and removed interface " + (*iter).get().toString());
+ // break;
+ // }
+ //}
+ //auto iter = _interfaces.find(interface);
+ auto iter = _interfaces.find(const_cast<Interface&>(interface));
+ if (iter != _interfaces.end()) {
+ _interfaces.erase(iter);
+ TRACE("Transport::deregister_interface: Found and removed interface " + (*iter).get().toString());
+ }
+#elif defined(INTERFACES_LIST)
+ for (auto iter = _interfaces.begin(); iter != _interfaces.end(); ++iter) {
+ if ((*iter).get() == interface) {
+ _interfaces.erase(iter);
+ TRACE("Transport::deregister_interface: Found and removed interface " + (*iter).get().toString());
+ break;
+ }
+ }
+#elif defined(INTERFACES_MAP)
+ auto iter = _interfaces.find(interface.get_hash());
+ if (iter != _interfaces.end()) {
+ TRACE("Transport::deregister_interface: Found and removed interface " + (*iter).second.toString());
+ _interfaces.erase(iter);
+ }
+#endif
+}
+
+/*static*/ void Transport::register_destination(Destination& destination) {
+ //TRACE("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
+ TRACE("Transport: Registering destination " + destination.toString());
+ destination.mtu(Type::Reticulum::MTU);
+ if (destination.direction() == Type::Destination::IN) {
+#if defined(DESTINATIONS_SET)
+ for (auto& registered_destination : _destinations) {
+ if (destination.hash() == registered_destination.hash()) {
+ throw std::runtime_error("Attempt to register an already registered destination.");
+ }
+ }
+
+ // CBA ACCUMULATES
+ _destinations.insert(destination);
+#elif defined(DESTINATIONS_MAP)
+ auto iter = _destinations.find(destination.hash());
+ if (iter != _destinations.end()) {
+ throw std::runtime_error("Attempt to register an already registered destination.");
+ }
+
+ // CBA ACCUMULATES
+ _destinations.insert({destination.hash(), destination});
+#endif
+
+ if (_owner && _owner.is_connected_to_shared_instance()) {
+ if (destination.type() == Type::Destination::SINGLE) {
+ TRACE("Transport:register_destination: Announcing destination " + destination.toString());
+ destination.announce({}, true);
+ }
+ }
+ }
+ else {
+ TRACE("Transport:register_destination: Skipping registration (not direction IN) of destination " + destination.toString());
+ }
+
+/*
+#if defined(DESTINATIONS_SET)
+ for (const Destination& destination : _destinations) {
+#elif defined(DESTINATIONS_MAP)
+ for (auto& [hash, destination] : _destinations) {
+#endif
+ TRACE("Transport::register_destination: Listed destination " + destination.toString());
+ }
+*/
+ //TRACE("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
+}
+
+/*static*/ void Transport::deregister_destination(const Destination& destination) {
+ TRACE("Transport: Deregistering destination " + destination.toString());
+#if defined(DESTINATIONS_SET)
+ if (_destinations.find(destination) != _destinations.end()) {
+ _destinations.erase(destination);
+ TRACE("Transport::deregister_destination: Found and removed destination " + destination.toString());
+ }
+#elif defined(DESTINATIONS_MAP)
+ auto iter = _destinations.find(destination.hash());
+ if (iter != _destinations.end()) {
+ _destinations.erase(iter);
+ TRACE("Transport::deregister_destination: Found and removed destination " + (*iter).second.toString());
+ }
+#endif
+}
+
+/*static*/ void Transport::register_link(Link& link) {
+ TRACE("Transport: Registering link " + link.toString());
+ if (link.initiator()) {
+ // CBA ACCUMULATES
+ _pending_links.insert(link);
+ }
+ else {
+ // CBA ACCUMULATES
+ _active_links.insert(link);
+ }
+}
+
+/*static*/ void Transport::activate_link(Link& link) {
+ TRACE("Transport: Activating link " + link.toString());
+ if (_pending_links.find(link) != _pending_links.end()) {
+ if (link.status() != Type::Link::ACTIVE) {
+ throw std::runtime_error("Invalid link state for link activation: " + std::to_string(link.status()));
+ }
+ _pending_links.erase(link);
+ // CBA ACCUMULATES
+ _active_links.insert(link);
+ link.status(Type::Link::ACTIVE);
+ }
+ else {
+ ERROR("Attempted to activate a link that was not in the pending table");
+ }
+}
+
+/*
+Registers an announce handler.
+
+:param handler: Must be an object with an *aspect_filter* attribute and a *received_announce(destination_hash, announced_identity, app_data)* callable. See the :ref:`Announce Example<example-announce>` for more info.
+*/
+/*static*/ void Transport::register_announce_handler(HAnnounceHandler handler) {
+ TRACE("Transport: Registering announce handler " + handler->aspect_filter());
+ _announce_handlers.insert(handler);
+}
+
+/*
+Deregisters an announce handler.
+
+:param handler: The announce handler to be deregistered.
+*/
+/*static*/ void Transport::deregister_announce_handler(HAnnounceHandler handler) {
+ TRACE("Transport: Deregistering announce handler " + handler->aspect_filter());
+ if (_announce_handlers.find(handler) != _announce_handlers.end()) {
+ _announce_handlers.erase(handler);
+ TRACE("Transport::deregister_announce_handler: Found and removed handler" + handler->aspect_filter());
+ }
+}
+
+/*static*/ Interface Transport::find_interface_from_hash(const Bytes& interface_hash) {
+#if defined(INTERFACES_SET)
+ for (const Interface& interface : _interfaces) {
+ if (interface.get_hash() == interface_hash) {
+ TRACE("Transport::find_interface_from_hash: Found interface " + interface.toString());
+ return interface;
+ }
+ }
+#elif defined(INTERFACES_LIST)
+ for (Interface& interface : _interfaces) {
+ if (interface.get_hash() == interface_hash) {
+ TRACE("Transport::find_interface_from_hash: Found interface " + interface.toString());
+ return interface;
+ }
+ }
+#elif defined(INTERFACES_MAP)
+ auto iter = _interfaces.find(interface_hash);
+ if (iter != _interfaces.end()) {
+ TRACE("Transport::find_interface_from_hash: Found interface " + (*iter).second.toString());
+ return (*iter).second;
+ }
+#endif
+
+ return {Type::NONE};
+}
+
+/*static*/ bool Transport::should_cache_packet(const Packet& packet) {
+ // TODO: Rework the caching system. It's currently
+ // not very useful to even cache Resource proofs,
+ // disabling it for now, until redesigned.
+ // if packet.context == RNS.Packet.RESOURCE_PRF:
+ // return True
+
+ return false;
+}
+
+// When caching packets to storage, they are written
+// exactly as they arrived over their interface. This
+// means that they have not had their hop count
+// increased yet! Take note of this when reading from
+// the packet cache.
+/*static*/ bool Transport::cache_packet(const Packet& packet, bool force_cache /*= false*/) {
+ TRACE("Checking to see if packet " + packet.get_hash().toHex() + " should be cached");
+#if defined(RNS_USE_FS) && defined(RNS_PERSIST_PATHS)
+ if (should_cache_packet(packet) || force_cache) {
+ TRACE("Saving packet " + packet.get_hash().toHex() + " to storage");
+ try {
+ char packet_cache_path[Type::Reticulum::FILEPATH_MAXSIZE];
+ snprintf(packet_cache_path, Type::Reticulum::FILEPATH_MAXSIZE, "%s/%s", Reticulum::_cachepath, packet.get_hash().toHex().c_str());
+ return (Persistence::serialize(packet, packet_cache_path) > 0);
+ }
+ catch (std::exception& e) {
+ ERROR("Error writing packet to cache. The contained exception was: " + std::string(e.what()));
+ }
+ }
+#endif
+ return false;
+}
+
+/*static*/ Packet Transport::get_cached_packet(const Bytes& packet_hash) {
+ TRACE("Loading packet " + packet_hash.toHex() + " from cache storage");
+#if defined(RNS_USE_FS) && defined(RNS_PERSIST_PATHS)
+ try {
+
+ char packet_cache_path[Type::Reticulum::FILEPATH_MAXSIZE];
+ snprintf(packet_cache_path, Type::Reticulum::FILEPATH_MAXSIZE, "%s/%s", Reticulum::_cachepath, packet_hash.toHex().c_str());
+ Packet packet({Type::NONE});
+ if (Persistence::deserialize(packet, packet_cache_path) > 0) {
+ packet.unpack();
+ }
+ return packet;
+ }
+ catch (std::exception& e) {
+ ERROR("Exception occurred while getting cached packet.");
+ ERRORF("The contained exception was: %s", e.what());
+ }
+#endif
+ return {Type::NONE};
+}
+
+/*static*/ bool Transport::clear_cached_packet(const Bytes& packet_hash) {
+ TRACE("Clearing packet " + packet_hash.toHex() + " from cache storage");
+#if defined(RNS_USE_FS) && defined(RNS_PERSIST_PATHS)
+ try {
+ char packet_cache_path[Type::Reticulum::FILEPATH_MAXSIZE];
+ snprintf(packet_cache_path, Type::Reticulum::FILEPATH_MAXSIZE, "%s/%s", Reticulum::_cachepath, packet_hash.toHex().c_str());
+ double start_time = OS::time();
+ bool success = RNS::Utilities::OS::remove_file(packet_cache_path);
+ double diff_time = OS::time() - start_time;
+ if (diff_time < 1.0) {
+ DEBUG("Remove cached packet in " + std::to_string((int)(diff_time*1000)) + " ms");
+ }
+ else {
+ DEBUG("Remove cached packet in " + std::to_string(diff_time) + " s");
+ }
+ }
+ catch (std::exception& e) {
+ ERROR("Exception occurred while clearing cached packet.");
+ ERRORF("The contained exception was: %s", e.what());
+ }
+#endif
+ return false;
+}
+
+/*static*/ bool Transport::cache_request_packet(const Packet& packet) {
+ if (packet.data().size() == Type::Identity::HASHLENGTH/8) {
+ const Packet& cached_packet = get_cached_packet(packet.data());
+
+ if (cached_packet) {
+ // If the packet was retrieved from the local
+ // cache, replay it to the Transport instance,
+ // so that it can be directed towards it original
+ // destination.
+ inbound(cached_packet.raw(), cached_packet.receiving_interface());
+ return true;
+ }
+ else {
+ return false;
+ }
+ }
+ else {
+ return false;
+ }
+}
+
+/*static*/ void Transport::cache_request(const Bytes& packet_hash, const Destination& destination) {
+ const Packet& cached_packet = get_cached_packet(packet_hash);
+ if (cached_packet) {
+ // The packet was found in the local cache,
+ // replay it to the Transport instance.
+ inbound(cached_packet.raw(), cached_packet.receiving_interface());
+ }
+ else {
+ // The packet is not in the local cache,
+ // query the network.
+ Packet request(destination, packet_hash, Type::Packet::DATA, Type::Packet::CACHE_REQUEST);
+ request.send();
+ }
+}
+
+/*static*/ const Transport::PathEntry* Transport::select_path(const Bytes& destination_hash) {
+ auto iter = _destination_table.find(destination_hash);
+ if (iter == _destination_table.end()) return nullptr;
+
+ const auto& deque = iter->second;
+ double now = OS::time();
+ const PathEntry* best = nullptr;
+ double best_score = -1.0;
+
+ for (const auto& entry : deque) {
+ if (entry.is_expired(now)) continue;
+ Interface iface = find_interface_from_hash(entry.receiving_interface);
+ uint32_t bitrate = iface ? iface.bitrate() : 0;
+ double s = entry.score(bitrate);
+ if (s > best_score) {
+ best_score = s;
+ best = &entry;
+ }
+ }
+ return best;
+}
+
+/*static*/ std::vector<Transport::PathEntry> Transport::select_all_paths(const Bytes& destination_hash) {
+ std::vector<PathEntry> result;
+ auto iter = _destination_table.find(destination_hash);
+ if (iter == _destination_table.end()) return result;
+
+ double now = OS::time();
+ for (const auto& entry : iter->second) {
+ if (entry.is_expired(now)) continue;
+ result.push_back(entry);
+ }
+ // Sort by score descending (best first)
+ std::sort(result.begin(), result.end(),
+ [&](const PathEntry& a, const PathEntry& b) {
+ Interface iface_a = find_interface_from_hash(a.receiving_interface);
+ Interface iface_b = find_interface_from_hash(b.receiving_interface);
+ uint32_t br_a = iface_a ? iface_a.bitrate() : 0;
+ uint32_t br_b = iface_b ? iface_b.bitrate() : 0;
+ return a.score(br_a) > b.score(br_b);
+ });
+ return result;
+}
+
+/*static*/ bool Transport::remove_path(const Bytes& destination_hash) {
+ if (_destination_table.erase(destination_hash) > 0) {
+ // CBA also remove cached announce packet if exists
+ }
+ return false;
+}
+
+/*
+:param destination_hash: A destination hash as *bytes*.
+:returns: *True* if a path to the destination is known, otherwise *False*.
+*/
+/*static*/ bool Transport::has_path(const Bytes& destination_hash) {
+ return select_path(destination_hash) != nullptr;
+}
+
+/*
+:param destination_hash: A destination hash as *bytes*.
+:returns: The number of hops to the specified destination, or ``RNS.Transport.PATHFINDER_M`` if the number of hops is unknown.
+*/
+/*static*/ uint8_t Transport::hops_to(const Bytes& destination_hash) {
+ const PathEntry* entry = select_path(destination_hash);
+ if (entry) {
+ return entry->hops;
+ }
+ else {
+ return PATHFINDER_M;
+ }
+}
+
+/*
+:param destination_hash: A destination hash as *bytes*.
+:returns: The destination hash as *bytes* for the next hop to the specified destination, or *None* if the next hop is unknown.
+*/
+/*static*/ Bytes Transport::next_hop(const Bytes& destination_hash) {
+ const PathEntry* entry = select_path(destination_hash);
+ if (entry) {
+ return entry->next_hop;
+ }
+ else {
+ return {};
+ }
+}
+
+/*
+:param destination_hash: A destination hash as *bytes*.
+:returns: The interface for the next hop to the specified destination, or *None* if the interface is unknown.
+*/
+/*static*/ Interface Transport::next_hop_interface(const Bytes& destination_hash) {
+ const PathEntry* entry = select_path(destination_hash);
+ if (entry) {
+ return find_interface_from_hash(entry->receiving_interface);
+ }
+ else {
+ return {Type::NONE};
+ }
+}
+
+/*static*/ uint32_t Transport::next_hop_interface_bitrate(const Bytes& destination_hash) {
+ const Interface& interface = next_hop_interface(destination_hash);
+ if (interface) {
+ return interface.bitrate();
+ }
+ else {
+ return 0;
+ }
+}
+
+/*static*/ uint16_t Transport::next_hop_interface_hw_mtu(const Bytes& destination_hash) {
+ const Interface& interface = next_hop_interface(destination_hash);
+ if (interface) {
+ if (interface.AUTOCONFIGURE_MTU() || interface.FIXED_MTU()) return interface.HW_MTU();
+ else return 0;
+ }
+ else {
+ return 0;
+ }
+}
+
+/*static*/ double Transport::next_hop_per_bit_latency(const Bytes& destination_hash) {
+ uint32_t bitrate = next_hop_interface_bitrate(destination_hash);
+ if (bitrate > 0) {
+ return (1.0/(double)bitrate);
+ }
+ else {
+ return 0.0;
+ }
+}
+
+/*static*/ double Transport::next_hop_per_byte_latency(const Bytes& destination_hash) {
+ double per_bit_latency = next_hop_per_bit_latency(destination_hash);
+ if (per_bit_latency > 0.0) {
+ return per_bit_latency*8.0;
+ }
+ else {
+ return 0.0;
+ }
+}
+
+/*static*/ double Transport::first_hop_timeout(const Bytes& destination_hash) {
+ double latency = next_hop_per_byte_latency(destination_hash);
+ if (latency > 0.0) {
+ return RNS::Type::Reticulum::MTU * latency + RNS::Type::Reticulum::DEFAULT_PER_HOP_TIMEOUT;
+ }
+ else {
+ return RNS::Type::Reticulum::DEFAULT_PER_HOP_TIMEOUT;
+ }
+}
+
+/*static*/ double Transport::extra_link_proof_timeout(const Interface& interface) {
+ if (interface) {
+ return ((1.0/(double)interface.bitrate())*8.0)*RNS::Type::Reticulum::MTU;
+ }
+ else {
+ return 0.0;
+ }
+}
+
+/*static*/ bool Transport::expire_path(const Bytes& destination_hash) {
+ // Remove ALL entries for this destination (hard delete, not soft-expire)
+ return _destination_table.erase(destination_hash) > 0;
+}
+
+/*static*/ bool Transport::mark_path_unresponsive(const Bytes& destination_hash, const Bytes& blocked_interface /*= {}*/) {
+ auto iter = _destination_table.find(destination_hash);
+ if (iter == _destination_table.end()) return false;
+
+ auto& deque = iter->second;
+ if (!blocked_interface) {
+ // No interface specified: remove all paths (backward compat)
+ _destination_table.erase(iter);
+ return true;
+ }
+
+ // Remove only entries matching the blocked interface
+ size_t before = deque.size();
+ deque.erase(std::remove_if(deque.begin(), deque.end(),
+ [&blocked_interface](const PathEntry& e) {
+ return e.receiving_interface == blocked_interface;
+ }), deque.end());
+
+ // If deque is now empty, remove the whole destination entry
+ if (deque.empty()) {
+ _destination_table.erase(iter);
+ }
+ return deque.size() < before;
+}
+
+
+/*
+Requests a path to the destination from the network. If
+another reachable peer on the network knows a path, it
+will announce it.
+
+:param destination_hash: A destination hash as *bytes*.
+:param on_interface: If specified, the path request will only be sent on this interface. In normal use, Reticulum handles this automatically, and this parameter should not be used.
+*/
+///*static*/ void Transport::request_path(const Bytes& destination_hash, const Interface& on_interface /*= {Type::NONE}*/, const Bytes& tag /*= {}*/, bool recursive /*= false*/) {
+/*static*/ void Transport::request_path(const Bytes& destination_hash, const Interface& on_interface, const Bytes& tag /*= {}*/, bool recursive /*= false*/) {
+ Bytes request_tag;
+ if (!tag) {
+ request_tag = Identity::get_random_hash();
+ }
+ else {
+ request_tag = tag;
+ }
+
+ Bytes path_request_data;
+ if (true) {
+ path_request_data = destination_hash + _identity.hash() + request_tag;
+ }
+ else {
+ path_request_data = destination_hash + request_tag;
+ }
+
+ Destination path_request_dst({Type::NONE}, Type::Destination::OUT, Type::Destination::PLAIN, Type::Transport::APP_NAME, "path.request");
+ Packet packet(path_request_dst, on_interface, path_request_data, Type::Packet::DATA, Type::Packet::CONTEXT_NONE, Type::Transport::BROADCAST, Type::Packet::HEADER_1);
+
+ if (on_interface && recursive) {
+// TODO
+
+
+ bool queued_announces = (on_interface.announce_queue().size() > 0);
+ if (queued_announces) {
+ TRACE("Blocking recursive path request on " + on_interface.toString() + " due to queued announces");
+ return;
+ }
+ else {
+ double now = OS::time();
+ if (now < on_interface.announce_allowed_at()) {
+ TRACE("Blocking recursive path request on " + on_interface.toString() + " due to active announce cap");
+ return;
+ }
+ else {
+ uint32_t wait_time = 0;
+ if ( on_interface.bitrate() > 0 && on_interface.announce_cap() > 0) {
+ uint32_t tx_time = ((path_request_data.size() + Type::Reticulum::HEADER_MINSIZE)*8) / on_interface.bitrate();
+ wait_time = (tx_time / on_interface.announce_cap());
+ }
+ const_cast<Interface&>(on_interface).announce_allowed_at(now + wait_time);
+ }
+ }
+ }
+
+ packet.send();
+ flatmap_upsert(_path_requests, destination_hash, OS::time());
+}
+
+/*static*/ void Transport::request_path(const Bytes& destination_hash) {
+ return request_path(destination_hash, {Type::NONE});
+}
+
+/*static*/ void Transport::path_request_handler(const Bytes& data, const Packet& packet) {
+ TRACE("Transport::path_request_handler");
+ if (data.size() >= 16) { WLOG(packet, "PATH-REQ for " + data.left(16).toHex().substr(0,8) + " from " + packet.receiving_interface().toString()); }
+ try {
+ // If there is at least bytes enough for a destination
+ // hash in the packet, we assume those bytes are the
+ // destination being requested.
+ if (data.size() >= Type::Identity::TRUNCATED_HASHLENGTH/8) {
+ Bytes destination_hash = data.left(Type::Identity::TRUNCATED_HASHLENGTH/8);
+ //TRACE("Transport::path_request_handler: destination_hash: " + destination_hash.toHex());
+ // If there is also enough bytes for a transport
+ // instance ID and at least one tag byte, we
+ // assume the next bytes to be the trasport ID
+ // of the requesting transport instance.
+ Bytes requesting_transport_instance;
+ if (data.size() > (Type::Identity::TRUNCATED_HASHLENGTH/8)*2) {
+ requesting_transport_instance = data.mid(Type::Identity::TRUNCATED_HASHLENGTH/8, Type::Identity::TRUNCATED_HASHLENGTH/8);
+ //TRACE("Transport::path_request_handler: requesting_transport_instance: " + requesting_transport_instance.toHex());
+ }
+
+ Bytes tag_bytes;
+ if (data.size() > Type::Identity::TRUNCATED_HASHLENGTH/8*2) {
+ tag_bytes = data.mid(Type::Identity::TRUNCATED_HASHLENGTH/8*2);
+ }
+ else if (data.size() > Type::Identity::TRUNCATED_HASHLENGTH/8) {
+ tag_bytes = data.mid(Type::Identity::TRUNCATED_HASHLENGTH/8);
+ }
+
+ if (tag_bytes) {
+ //TRACE("Transport::path_request_handler: tag_bytes: " + tag_bytes.toHex());
+ if (tag_bytes.size() > Type::Identity::TRUNCATED_HASHLENGTH/8) {
+ tag_bytes = tag_bytes.left(Type::Identity::TRUNCATED_HASHLENGTH/8);
+ }
+
+ Bytes unique_tag = destination_hash + tag_bytes;
+ //TRACE("Transport::path_request_handler: unique_tag: " + unique_tag.toHex());
+
+ if (_discovery_pr_tags.find(unique_tag) == _discovery_pr_tags.end()) {
+ // CBA ACCUMULATES
+ _discovery_pr_tags.insert(unique_tag);
+
+ path_request(
+ destination_hash,
+ false,
+ packet.receiving_interface(),
+ requesting_transport_instance,
+ tag_bytes
+ );
+ }
+ else {
+ NOTICE("[PKT] PATH-REQ-DUP for " + destination_hash.toHex().substr(0,8));
+ }
+ }
+ else {
+ DEBUG("Ignoring tagless path request for " + destination_hash.toHex());
+ }
+ }
+ }
+ catch (std::exception& e) {
+ ERROR("Error while handling path request. The contained exception was: " + std::string(e.what()));
+ }
+}
+
+/*static*/ void Transport::path_request(const Bytes& destination_hash, bool is_from_local_client, const Interface& attached_interface, const Bytes& requestor_transport_id /*= {}*/, const Bytes& tag /*= {}*/) {
+ TRACE("Transport::path_request");
+ bool should_search_for_unknown = false;
+ std::string interface_str;
+
+ if (attached_interface) {
+ should_search_for_unknown = true;
+ interface_str = " on " + attached_interface.toString();
+ }
+
+ DEBUG("Path request for destination " + destination_hash.toHex() + interface_str);
+
+ bool destination_exists_on_local_client = false;
+ if (false) {
+ if (has_path(destination_hash)) {
+ TRACE("Transport::path_request_handler: entry found for destination " + destination_hash.toHex());
+ Interface iface = next_hop_interface(destination_hash);
+ if (false) {
+ destination_exists_on_local_client = true;
+ // CBA ACCUMULATES
+ _pending_local_path_requests.insert({destination_hash, attached_interface.get_hash()});
+ }
+ }
+ else {
+ TRACE("Transport::path_request_handler: entry not found for destination " + destination_hash.toHex());
+ }
+ }
+
+ auto destination_iter = _destination_table.find(destination_hash);
+ //local_destination = next((d for d in Transport.destinations if d.hash == destination_hash), None)
+#if defined(DESTINATIONS_SET)
+ Destination local_destination({Type::NONE});
+ for (auto& destination : _destinations) {
+ if (destination.hash() == destination_hash) {
+ local_destination = destination;
+ break;
+ }
+ }
+ //if local_destination != None:
+ if (local_destination) {
+#elif defined(DESTINATIONS_MAP)
+ auto iter = _destinations.find(destination_hash);
+ if (iter != _destinations.end()) {
+ auto& local_destination = (*iter).second;
+#endif
+ local_destination.announce({Bytes::NONE}, true, attached_interface, tag);
+ DEBUG("Answering path request for destination " + destination_hash.toHex() + interface_str + ", destination is local to this system");
+ }
+ else if ((true) && has_path(destination_hash)) {
+ TRACE("Transport::path_request_handler: entry found for destination " + destination_hash.toHex());
+ const PathEntry* entry = select_path(destination_hash);
+ if (!entry) {
+ TRACE("path_request: selected path expired for " + destination_hash.toHex());
+ return;
+ }
+ const Packet& announce_packet = get_cached_packet(entry->packet_hash);
+ const Bytes& next_hop = entry->next_hop;
+ if (!announce_packet) {
+ // Cache file missing or corrupt — remove the stale entry and bail
+ WARNING("path_request: removing stale path to " + destination_hash.toHex() + " due to missing announce packet cache");
+ // Remove the specific entry with the missing cache
+ auto iter = _destination_table.find(destination_hash);
+ if (iter != _destination_table.end()) {
+ iter->second.erase(std::remove_if(iter->second.begin(), iter->second.end(),
+ [&entry](const PathEntry& e) { return e.packet_hash == entry->packet_hash; }),
+ iter->second.end());
+ if (iter->second.empty()) _destination_table.erase(iter);
+ }
+ return;
+ }
+ const Interface& receiving_interface = find_interface_from_hash(entry->receiving_interface);
+
+ if (requestor_transport_id && entry->next_hop == requestor_transport_id) {
+ // TODO: Find a bandwidth efficient way to invalidate our
+ // known path on this signal. The obvious way of signing
+ // path requests with transport instance keys is quite
+ // inefficient. There is probably a better way. Doing
+ // path invalidation here would decrease the network
+ // convergence time. Maybe just drop it?
+ DEBUG("Not answering path request for destination " + destination_hash.toHex() + interface_str + ", since next hop is the requestor");
+ }
+ else {
+ DEBUG("Answering path request for destination " + destination_hash.toHex() + interface_str + ", path is known");
+ DEBUG("DIAG: PATH-RESP for " + destination_hash.toHex().substr(0,8) + interface_str);
+
+ double now = OS::time();
+ uint8_t retries = Type::Transport::PATHFINDER_R;
+ uint8_t local_rebroadcasts = 0;
+ bool block_rebroadcasts = true;
+ // Use PathEntry.hops (correct hop count from announce, not stale wire bytes)
+ uint8_t announce_hops = entry->hops;
+
+ double retransmit_timeout = now + Type::Transport::PATH_REQUEST_GRACE;
+
+ // This handles an edge case where a peer sends a past
+ // request for a destination just after an announce for
+ // said destination has arrived, but before it has been
+ // rebroadcast locally. In such a case the actual announce
+ // is temporarily held, and then reinserted when the path
+ // request has been served to the peer.
+ auto announce_iter = _announce_table.find(announce_packet.destination_hash());
+ if (announce_iter != _announce_table.end()) {
+ AnnounceEntry& held_entry = (*announce_iter).second;
+ // CBA ACCUMULATES
+ _held_announces.insert({announce_packet.destination_hash(), held_entry});
+ // BUG FIX: Must erase old entry before insert(),
+ // since std::map::insert() is a no-op when key exists.
+ // Python dict assignment overwrites, but C++ insert does not.
+ _announce_table.erase(announce_iter);
+ }
+
+ AnnounceEntry announce_entry(
+ now,
+ retransmit_timeout,
+ retries,
+ next_hop,
+ announce_hops,
+ announce_packet,
+ local_rebroadcasts,
+ block_rebroadcasts,
+ attached_interface
+ );
+ // CBA ACCUMULATES
+ _announce_table.insert({announce_packet.destination_hash(), announce_entry});
+ }
+ }
+ else if (should_search_for_unknown) {
+ TRACE("Transport::path_request_handler: searching for unknown path to " + destination_hash.toHex());
+ if (flatmap_find(_discovery_path_requests, destination_hash) != _discovery_path_requests.end()) {
+ DEBUG("There is already a waiting path request for destination " + destination_hash.toHex() + " on behalf of path request" + interface_str);
+ }
+ else {
+ // Forward path request on all interfaces
+ // except the requestor interface
+ DEBUG("Attempting to discover unknown path to destination " + destination_hash.toHex() + " on behalf of path request" + interface_str);
+
+#if defined(FIREWALL_MODE)
+ // Track this destination in Whitelist 2 so the path
+ // response announce from the backbone will be allowed through
+ wl2_push(destination_hash);
+#endif
+
+#if defined(INTERFACES_SET)
+ for (const Interface& interface : _interfaces) {
+#elif defined(INTERFACES_LIST)
+ for (Interface& interface : _interfaces) {
+#elif defined(INTERFACES_MAP)
+ for (auto& [hash, interface] : _interfaces) {
+#endif
+ // Only forward path requests to interfaces other than
+ // the one they arrived on — prevents WAN path requests
+ // from flooding the LoRa channel.
+ if (interface != attached_interface) {
+ TRACE("Transport::path_request: requesting path on interface " + interface.toString());
+ // Use the previously extracted tag from this path request
+ // on the new path requests as well, to avoid potential loops
+ request_path(destination_hash, interface, tag, true);
+ }
+ else {
+ TRACE("Transport::path_request: not requesting path on same interface " + interface.toString());
+ }
+ }
+ }
+ }
+ else {
+ DEBUG("Ignoring path request for destination " + destination_hash.toHex() + interface_str + ", no path known");
+ }
+}
+
+/*static*/ uint64_t Transport::announce_emitted(const Packet& packet) {
+ Bytes random_blob = packet.data().mid(RNS::Type::Identity::KEYSIZE/8+RNS::Type::Identity::NAME_HASH_LENGTH/8, 10);
+ if (random_blob) {
+ return OS::from_bytes_big_endian(random_blob.data() + 5, 5);
+ }
+ return 0;
+}
+
+/*static*/ void Transport::drop_announce_queues() {
+ // No-op in firewall mode: announce queues handled by jobs() loop
+}
+
+/*static*/ void Transport::write_packet_hashlist() {
+#if defined(RNS_USE_FS) && defined(RNS_PERSIST_PATHS)
+// TODO
+
+#endif
+}
+
+//#define CUSTOM 1
+
+/*static*/ bool Transport::read_path_table() {
+ DEBUG("Transport::read_path_table");
+#if defined(RNS_USE_FS) && defined(RNS_PERSIST_PATHS)
+ char destination_table_path[Type::Reticulum::FILEPATH_MAXSIZE];
+ snprintf(destination_table_path, Type::Reticulum::FILEPATH_MAXSIZE, "%s/destination_table", Reticulum::_storagepath);
+ if (!_owner.is_connected_to_shared_instance() && OS::file_exists(destination_table_path)) {
+
+
+ try {
+#if CUSTOM
+TRACEF("Transport::start: buffer capacity %d bytes", Persistence::_buffer.capacity());
+ if (RNS::Utilities::OS::read_file(destination_table_path, Persistence::_buffer) > 0) {
+ TRACEF("Transport::start: read: %d bytes", Persistence::_buffer.size());
+#ifndef NDEBUG
+ // CBA DEBUG Dump path table
+TRACEF("Transport::start: buffer addr: 0x%X", Persistence::_buffer.data());
+TRACEF("Transport::start: buffer size %d bytes", Persistence::_buffer.size());
+ //TRACE("SERIALIZED: destination_table");
+ //TRACE(Persistence::_buffer.toString());
+#endif
+#ifdef USE_MSGPACK
+ DeserializationError error = deserializeMsgPack(Persistence::_document, Persistence::_buffer.data());
+#else
+ DeserializationError error = deserializeJson(Persistence::_document, Persistence::_buffer.data());
+#endif
+ TRACEF("Transport::start: doc size: %d bytes", Persistence::_buffer.size());
+ if (!error) {
+ // Calculate crc for dirty-checking before write
+ _destination_table_crc = Crc::crc32(0, Persistence::_buffer.data(), Persistence::_buffer.size());
+ _destination_table = Persistence::_document.as<std::map<Bytes, std::deque<PathEntry>>>();
+#else // CUSTOM
+ // Calculate crc for dirty-checking before write
+ if (Persistence::deserialize(_destination_table, destination_table_path, _destination_table_crc) > 0) {
+#endif // CUSTOM
+
+ TRACEF("Transport::start: successfully deserialized path table with %d entries", _destination_table.size());
+ std::vector<Bytes> invalid_paths;
+ double now = OS::time();
+ for (auto& [destination_hash, deque] : _destination_table) {
+ // Remove individual entries with missing packet cache or interface
+ deque.erase(std::remove_if(deque.begin(), deque.end(),
+ [](PathEntry& entry) {
+ Interface iface = find_interface_from_hash(entry.receiving_interface);
+ Packet pkt = get_cached_packet(entry.packet_hash);
+ if (!iface || !pkt) {
+ return true; // remove — interface or cache missing
+ }
+ // Drop paths through interfaces that have no connected
+ // clients at boot. TCP client connections don't survive
+ // reboots, so saved paths through LocalTcpInterface are
+ // dead until the client reconnects and re-announces.
+ if (!iface.isConnected()) {
+ return true; // remove — no clients connected
+ }
+ return false;
+ }), deque.end());
+ if (deque.empty()) {
+ invalid_paths.push_back(destination_hash);
+ }
+ // Reset timestamps to boot time minus staleness threshold.
+ // Without NTP, saved timestamps are seconds-since-boot from
+ // a previous session and are meaningless after reboot.
+ // Starting stale causes the first packet to each destination
+ // to hedge immediately, firing a path_request to revalidate.
+ double stale_time = now - (double)Type::Transport::PATH_STALE_THRESHOLD - 1.0;
+ for (auto& entry : deque) {
+ entry.timestamp = stale_time;
+ }
+ }
+ for (const auto& destination_hash : invalid_paths) {
+ _destination_table.erase(destination_hash);
+ }
+
+ // Enforce maxsize on loaded paths (trim lowest-score if over limit)
+ if (_destination_table.size() > _path_table_maxsize) {
+ DEBUGF("Transport::start: trimming loaded path table from %d to %d entries", _destination_table.size(), _path_table_maxsize);
+ cull_path_table();
+ }
+
+ // Memory diagnostic after path table load
+ size_t total_entries = 0;
+ for (const auto& [hash, deque] : _destination_table) {
+ total_entries += deque.size();
+ }
+ DEBUGF("Transport::start: path table: %d dests, %d total entries",
+ _destination_table.size(), total_entries);
+
+ return true;
+ }
+ else {
+ TRACE("Transport::start: failed to deserialize");
+ }
+#if CUSTOM
+ }
+ else {
+ TRACE("Transport::start: destination table read failed");
+ }
+#else // CUSTOM
+#endif // CUSTOM
+
+ VERBOSEF("Loaded %d valid path table entries from storage", _destination_table.size());
+
+ }
+ catch (std::exception& e) {
+ ERRORF("Could not load destination table from storage, the contained exception was: %s", e.what());
+ }
+ }
+#endif
+ return false;
+}
+
+/*static*/ bool Transport::write_path_table() {
+ DEBUG("Transport::write_path_table");
+
+ if (Transport::_owner.is_connected_to_shared_instance()) {
+ return true;
+ }
+
+ bool success = false;
+#if defined(RNS_USE_FS) && defined(RNS_PERSIST_PATHS)
+ if (_saving_path_table) {
+ double wait_interval = 0.2;
+ double wait_timeout = 5;
+ double wait_start = OS::time();
+ while (_saving_path_table) {
+ OS::sleep(wait_interval);
+ if (OS::time() > (wait_start + wait_timeout)) {
+ ERROR("Could not save path table to storage, waiting for previous save operation timed out.");
+ return false;
+ }
+ }
+ }
+
+ try {
+ _saving_path_table = true;
+ double save_start = OS::time();
+ DEBUGF("Saving %d path table entries to storage...", _destination_table.size());
+
+ // Enforce maxpersist: create a trimmed copy for serialization
+ // keeping only the destinations with the best-score paths
+ std::map<Bytes, std::deque<PathEntry>> persist_table;
+ if (_destination_table.size() <= _path_table_maxpersist) {
+ persist_table = _destination_table;
+ }
+ else {
+ // Sort destinations by best path score, keep top N
+ double now = OS::time();
+ std::vector<std::pair<Bytes, double>> scored;
+ for (auto& [dest_hash, deque] : _destination_table) {
+ double best_score = -1.0;
+ for (const auto& entry : deque) {
+ if (entry.is_expired(now)) continue;
+ Interface iface = find_interface_from_hash(entry.receiving_interface);
+ double s = entry.score(iface ? iface.bitrate() : 0);
+ if (s > best_score) best_score = s;
+ }
+ if (best_score < 0) best_score = 0;
+ scored.push_back({dest_hash, best_score});
+ }
+ std::sort(scored.begin(), scored.end(),
+ [](const std::pair<Bytes, double>& a, const std::pair<Bytes, double>& b) { return a.second > b.second; });
+ for (size_t i = 0; i < _path_table_maxpersist && i < scored.size(); i++) {
+ auto iter = _destination_table.find(scored[i].first);
+ if (iter != _destination_table.end()) {
+ persist_table.insert(*iter);
+ }
+ }
+ DEBUGF("Trimmed path table from %d to %d destinations for persistence", _destination_table.size(), persist_table.size());
+ }
+
+
+#if CUSTOM
+ {
+ Persistence::_document.set(persist_table);
+ TRACEF("Transport::write_path_table: doc size %d bytes", Persistence::_document.memoryUsage());
+
+ //size_t size = 8192;
+ size_t size = Persistence::_buffer.capacity();
+TRACE("Transport::write_path_table: obtaining buffer size " + std::to_string(size) + " bytes");
+ uint8_t* buffer = Persistence::_buffer.writable(size);
+TRACE("Transport::write_path_table: buffer addr: " + std::to_string((long)buffer));
+#ifdef USE_MSGPACK
+ size_t length = serializeMsgPack(Persistence::_document, buffer, size);
+#else
+ size_t length = serializeJson(Persistence::_document, buffer, size);
+#endif
+ TRACEF("Transport::write_path_table: serialized %d bytes", length);
+ if (length < size) {
+ Persistence::_buffer.resize(length);
+ }
+ }
+ if (Persistence::_buffer.size() > 0) {
+ char destination_table_path[Type::Reticulum::FILEPATH_MAXSIZE];
+ snprintf(destination_table_path, Type::Reticulum::FILEPATH_MAXSIZE, "%s/destination_table", Reticulum::_storagepath);
+#ifndef NDEBUG
+ // CBA DEBUG Dump path table
+TRACE("Transport::write_path_table: buffer addr: " + std::to_string((long)Persistence::_buffer.data()));
+TRACE("Transport::write_path_table: buffer size " + std::to_string(Persistence::_buffer.size()) + " bytes");
+ //TRACE("SERIALIZED: destination_table");
+ //TRACE(Persistence::_buffer.toString());
+#endif
+ // Check crc to see if data has changed before writing
+ uint32_t crc = Crc::crc32(0, Persistence::_buffer.data(), Persistence::_buffer.size());
+ if (_destination_table_crc > 0 && crc == _destination_table_crc) {
+ TRACE("Transport::write_path_table: no change detected, skipping write");
+ }
+ else if (RNS::Utilities::OS::write_file(destination_table_path, Persistence::_buffer) == Persistence::_buffer.size()) {
+ TRACEF("Transport::write_path_table: wrote %d entries, %d bytes", _destination_table.size(), Persistence::_buffer.size());
+ _destination_table_crc = crc;
+ success = true;
+
+#ifndef NDEBUG
+ // CBA DEBUG Dump path table
+ //TRACE("FILE: destination_table");
+ //if (OS::read_file("/destination_table", Persistence::_buffer) > 0) {
+ // TRACE(Persistence::_buffer.toString());
+ //}
+#endif
+ }
+ else {
+ TRACE("Transport::write_path_table: write failed");
+ }
+ }
+ else {
+ TRACE("Transport::write_path_table: failed to serialize");
+ }
+#else // CUSTOM
+ uint32_t crc = Persistence::crc(persist_table);
+ if (_destination_table_crc > 0 && crc == _destination_table_crc) {
+ TRACE("Transport::write_path_table: no change detected, skipping write");
+ }
+ else {
+ TRACE("Transport::write_path_table: change detected, writing...");
+ char destination_table_path[Type::Reticulum::FILEPATH_MAXSIZE];
+ snprintf(destination_table_path, Type::Reticulum::FILEPATH_MAXSIZE, "%s/destination_table", Reticulum::_storagepath);
+ if (Persistence::serialize(persist_table, destination_table_path, _destination_table_crc) > 0) {
+ TRACEF("Transport::write_path_table: wrote %d entries, %d bytes", persist_table.size(), Persistence::_buffer.size());
+ success = true;
+ }
+ }
+#endif // CUSTOM
+
+ if (success) {
+ double save_time = OS::time() - save_start;
+ if (save_time < 1.0) {
+ //DEBUG("Saved " + std::to_string(_destination_table.size()) + " path table entries in " + std::to_string(OS::round(save_time * 1000, 1)) + " ms");
+ DEBUGF("Saved %d path table entries in %d ms", _destination_table.size(), (int)(save_time*1000));
+ }
+ else {
+ //DEBUG("Saved " + std::to_string(_destination_table.size()) + " path table entries in " + std::to_string(OS::round(save_time, 1)) + " s");
+ DEBUGF("Saved %d path table entries in %d s", _destination_table.size(), save_time);
+ }
+ }
+ }
+ catch (std::exception& e) {
+ ERRORF("Could not save path table to storage, the contained exception was: %s", e.what());
+ }
+#endif
+
+ _saving_path_table = false;
+
+ return success;
+}
+
+/*static*/ void Transport::read_tunnel_table() {
+ DEBUG("Transport::read_tunnel_table");
+#if defined(RNS_USE_FS) && defined(RNS_PERSIST_PATHS)
+// TODO
+
+#endif
+}
+
+/*static*/ void Transport::write_tunnel_table() {
+#if defined(RNS_USE_FS) && defined(RNS_PERSIST_PATHS)
+// TODO
+
+#endif
+}
+
+/*static*/ void Transport::persist_data() {
+ TRACE("Transport::persist_data()");
+ write_packet_hashlist();
+ write_path_table();
+ write_tunnel_table();
+}
+
+/*static*/ void Transport::clean_caches() {
+ TRACE("Transport::clean_caches()");
+#if defined(RNS_USE_FS) && defined(RNS_PERSIST_PATHS)
+ // CBA Remove cached packets no longer in path list
+ std::list<std::string> files = OS::list_directory(Reticulum::_cachepath);
+ for (auto& file : files) {
+ TRACE("Transport::clean_caches: Checking for use of cached packet " + file);
+ bool found = false;
+ for (auto& [destination_hash, deque] : _destination_table) {
+ for (auto& entry : deque) {
+ if (file.compare(entry.packet_hash.toHex()) == 0) {
+ found = true;
+ break;
+ }
+ }
+ if (found) break;
+ }
+ if (!found) {
+ TRACE("Transport::clean_caches: No matching path found, removing cached packet " + file);
+ char packet_cache_path[Type::Reticulum::FILEPATH_MAXSIZE];
+ snprintf(packet_cache_path, Type::Reticulum::FILEPATH_MAXSIZE, "%s/%s", Reticulum::_cachepath, file.c_str());
+ OS::remove_file(packet_cache_path);
+ }
+ }
+#endif
+}
+
+/*static*/ void Transport::clear_caches_in_memory() {
+ TRACE("Transport::clear_caches_in_memory()");
+
+ // Clear the packet hashlist (duplicate detection, ~100 × 40 bytes = ~4KB)
+ if (!_packet_hashlist.empty()) {
+ size_t before = _packet_hashlist.size();
+ _packet_hashlist.clear();
+ DEBUGF("Transport::clear_caches_in_memory: cleared %d packet hashlist entries", before);
+ }
+
+ // Clear global anti-replay blobs (capped at 8 × ~80 bytes = ~640 bytes)
+ if (!_global_blobs.empty()) {
+ size_t before = _global_blobs.size();
+ _global_blobs.clear();
+ DEBUGF("Transport::clear_caches_in_memory: cleared %d global blobs", before);
+ }
+
+ // Clear announce rate table
+ if (!_announce_rate_table.empty()) {
+ size_t before = _announce_rate_table.size();
+ _announce_rate_table.clear();
+ DEBUGF("Transport::clear_caches_in_memory: cleared %d announce rate entries", before);
+ }
+
+ // Clear discovery path request tags
+ if (!_discovery_pr_tags.empty()) {
+ size_t before = _discovery_pr_tags.size();
+ _discovery_pr_tags.clear();
+ DEBUGF("Transport::clear_caches_in_memory: cleared %d discovery PR tags", before);
+ }
+
+ cull_path_table();
+}
+
+/*static*/ void Transport::dump_stats() {
+
+ OS::dump_heap_stats();
+
+ size_t mem_used = OS::heap_size() - OS::heap_available();
+ size_t flash_used = OS::storage_size() - OS::storage_available();
+
+ if (_last_memory == 0) {
+ _last_memory = mem_used;
+ }
+ if (_last_flash == 0) {
+ _last_flash = flash_used;
+ }
+
+ // memory
+ // storage
+ // _destinations
+ // _destination_table
+ // _reverse_table
+ // _announce_table
+ // _held_announces
+ HEADF(LOG_VERBOSE, "heap: %u/%u (%u%%) [%+d] flash: %u/%u (%u%%) [%+d] paths: %u dsts: %u revr: %u annc: %u held: %u", mem_used, OS::heap_size(), (int)((double)mem_used / (double)OS::heap_size() * 100.0), mem_used - _last_memory, flash_used, OS::storage_size(), (int)((double)flash_used / (double)OS::storage_size() * 100.0), flash_used - _last_flash, _destination_table.size(), _destinations.size(), _reverse_table.size(), _announce_table.size(), _held_announces.size());
+
+ // _path_requests
+ // _discovery_path_requests
+ // _pending_local_path_requests
+ // _discovery_pr_tags
+ // _control_destinations
+ // _control_hashes
+ VERBOSEF("preqs: %u dpreqs: %u ppreqs: %u dprt: %u cdsts: %u chshs: %u", _path_requests.size(), _discovery_path_requests.size(), _pending_local_path_requests.size(), _discovery_pr_tags.size(), _control_destinations.size(), _control_hashes.size());
+
+ // _packet_hashlist
+ // _receipts
+ // _link_table
+ // _pending_links
+ // _active_links
+ // _tunnels
+ uint32_t destination_path_responses = 0;
+ for (auto& [destination_hash, destination] : _destinations) {
+ destination_path_responses += destination.path_responses().size();
+ }
+ uint32_t interface_announces = 0;
+ for (auto& [interface_hash, interface] : _interfaces) {
+ interface_announces += interface.announce_queue().size();
+ }
+ VERBOSEF("phl: %u rcp: %u lt: %u pl: %u al: %u tun: %u", _packet_hashlist.size(), _receipts.size(), _link_table.size(), _pending_links.size(), _active_links.size(), _tunnels.size());
+ VERBOSEF("bla: %u bma: %u", _firewall_local_addresses.size(), _firewall_mentioned_addresses.size());
+ VERBOSEF("pin: %u pout: %u padd: %u dpr: %u ikd: %u ia: %u\r\n", _packets_received, _packets_sent, _destinations_added, destination_path_responses, Identity::_known_destinations.size(), interface_announces);
+
+ _last_memory = mem_used;
+ _last_flash = flash_used;
+
+}
+
+/*static*/ void Transport::dump_whitelists() {
+#ifdef FIREWALL_MODE
+ Serial.printf("[WL#1] %u entries:", _firewall_local_addresses.size());
+ for (auto& addr : _firewall_local_addresses) {
+ Serial.printf(" %s", addr.toHex().substr(0,8).c_str());
+ }
+ Serial.printf("\r\n");
+ Serial.printf("[WL#2] %u entries:", _firewall_mentioned_addresses.size());
+ for (auto& addr : _firewall_mentioned_addresses) {
+ Serial.printf(" %s", addr.toHex().substr(0,8).c_str());
+ }
+ Serial.printf("\r\n");
+#endif
+}
+
+/*static*/ void Transport::exit_handler() {
+ TRACE("Transport::exit_handler()");
+ if (!_owner.is_connected_to_shared_instance()) {
+ persist_data();
+ }
+}
+
+/*static*/ Destination Transport::find_destination_from_hash(const Bytes& destination_hash) {
+ TRACE("Transport::find_destination_from_hash: Searching for destination " + destination_hash.toHex());
+#if defined(DESTINATIONS_SET)
+ for (const Destination& destination : _destinations) {
+ if (destination.get_hash() == destination_hash) {
+ TRACE("Transport::find_destination_from_hash: Found destination " + destination.toString());
+ return destination;
+ }
+ }
+#elif defined(DESTINATIONS_MAP)
+ auto iter = _destinations.find(destination_hash);
+ if (iter != _destinations.end()) {
+ TRACE("Transport::find_destination_from_hash: Found destination " + (*iter).second.toString());
+ return (*iter).second;
+ }
+#endif
+
+ return {Type::NONE};
+}
+
+/*static*/ void Transport::cull_path_table() {
+ TRACE("Transport::cull_path_table()");
+ double now = OS::time();
+
+ // Pass 1: Remove individual expired entries from each deque
+ std::vector<Bytes> empty_dests;
+ for (auto& [dest_hash, deque] : _destination_table) {
+ deque.erase(std::remove_if(deque.begin(), deque.end(),
+ [now](const PathEntry& e) { return e.is_expired(now); }),
+ deque.end());
+ if (deque.empty()) {
+ empty_dests.push_back(dest_hash);
+ }
+ }
+ // Remove empty destination entries
+ for (const auto& dest_hash : empty_dests) {
+ _destination_table.erase(dest_hash);
+ }
+
+ // Pass 2: If still over maxsize, evict destinations with the lowest-score best path
+ if (_destination_table.size() > _path_table_maxsize) {
+ // Build sorted list: (dest_hash, best_score) ascending
+ std::vector<std::pair<Bytes, double>> scored;
+ for (auto& [dest_hash, deque] : _destination_table) {
+ double best_score = -1.0;
+ for (const auto& entry : deque) {
+ if (entry.is_expired(now)) continue;
+ Interface iface = find_interface_from_hash(entry.receiving_interface);
+ double s = entry.score(iface ? iface.bitrate() : 0);
+ if (s > best_score) best_score = s;
+ }
+ if (best_score < 0) best_score = 0; // all expired, score 0
+ scored.push_back({dest_hash, best_score});
+ }
+ std::sort(scored.begin(), scored.end(),
+ [](const std::pair<Bytes, double>& a, const std::pair<Bytes, double>& b) { return a.second < b.second; });
+
+ uint16_t count = 0;
+ for (const auto& [dest_hash, score] : scored) {
+ if (_destination_table.size() <= _path_table_maxsize) break;
+ TRACE("Transport::cull_path_table: Removing destination " + dest_hash.toHex() + " from path table (score=" + std::to_string(score) + ")");
+ _destination_table.erase(dest_hash);
+ ++count;
+ }
+ if (count > 0) {
+ DEBUG("Removed " + std::to_string(count) + " path(s) from path table");
+ }
+ }
+}
+
+/*static*/ uint16_t Transport::remove_reverse_entries(const std::vector<Bytes>& hashes) {
+ uint16_t count = 0;
+ for (const auto& truncated_packet_hash : hashes) {
+ flatmap_erase(_reverse_table, truncated_packet_hash);
+ ++count;
+ }
+ if (count > 0) {
+ TRACEF("Released %u reverse table entries", count);
+ }
+ return count;
+}
+
+/*static*/ uint16_t Transport::remove_links(const std::vector<Bytes>& hashes) {
+ uint16_t count = 0;
+ for (const auto& link_id : hashes) {
+ _link_table.erase(link_id);
+ ++count;
+ }
+ if (count > 0) {
+ TRACEF("Released %u links", count);
+ }
+ return count;
+}
+
+/*static*/ uint16_t Transport::remove_paths(const std::vector<Bytes>& hashes) {
+ uint16_t count = 0;
+ for (const auto& destination_hash : hashes) {
+ //_destination_table.erase(destination_hash);
+ remove_path(destination_hash);
+ ++count;
+ }
+ if (count > 0) {
+ TRACEF("Released %u paths", count);
+ }
+ return count;
+}
+
+/*static*/ uint16_t Transport::remove_discovery_path_requests(const std::vector<Bytes>& hashes) {
+ uint16_t count = 0;
+ for (const auto& destination_hash : hashes) {
+ flatmap_erase(_discovery_path_requests, destination_hash);
+ ++count;
+ // Also clean up _discovery_pr_tags so future path requests
+ // for this destination are not permanently suppressed.
+ // unique_tag = destination_hash (16B) + tag_bytes (1-16B)
+ for (auto it = _discovery_pr_tags.begin(); it != _discovery_pr_tags.end(); ) {
+ if (it->size() >= destination_hash.size() && it->left(destination_hash.size()) == destination_hash) {
+ it = _discovery_pr_tags.erase(it);
+ } else {
+ ++it;
+ }
+ }
+ }
+ if (count > 0) {
+ TRACEF("Released %u waiting path requests", count);
+ }
+ return count;
+}
+
+/*static*/ uint16_t Transport::remove_tunnels(const std::vector<Bytes>& hashes) {
+ uint16_t count = 0;
+ for (const auto& tunnel_id : hashes) {
+ _tunnels.erase(tunnel_id);
+ ++count;
+ }
+ if (count > 0) {
+ TRACEF("Released %u tunnels", count);
+ }
+ return count;
+}
diff --git a/lib/microReticulum/src/Transport.cpp.bak2 b/lib/microReticulum/src/Transport.cpp.bak2
new file mode 100755
index 0000000..268313c
--- /dev/null
+++ b/lib/microReticulum/src/Transport.cpp.bak2
@@ -0,0 +1,4276 @@
+#include "Transport.h"
+#include "Link.h"
+
+#include "Reticulum.h"
+#include "Destination.h"
+#include "Identity.h"
+#include "Packet.h"
+#include "Interface.h"
+#include "Log.h"
+#include "Cryptography/Random.h"
+#include "Cryptography/HKDF.h"
+#include "Utilities/OS.h"
+#include "Utilities/Persistence.h"
+
+#include <algorithm>
+#include <unistd.h>
+#include <time.h>
+
+using namespace RNS;
+using namespace RNS::Type::Transport;
+using namespace RNS::Utilities;
+
+// ── Flat-map helpers (vector<pair<Bytes,T>> replaces std::map<Bytes,T>) ────
+// Eliminates per-element tree-node allocation. Linear search is fine
+// for N ≤ ~1000 on ESP32.
+
+template <typename T>
+static typename std::vector<std::pair<Bytes, T>>::iterator
+flatmap_find(std::vector<std::pair<Bytes, T>>& vec, const Bytes& key) {
+ for (auto it = vec.begin(); it != vec.end(); ++it) {
+ if (it->first == key) return it;
+ }
+ return vec.end();
+}
+
+template <typename T>
+static typename std::vector<std::pair<Bytes, T>>::const_iterator
+flatmap_find(const std::vector<std::pair<Bytes, T>>& vec, const Bytes& key) {
+ for (auto it = vec.begin(); it != vec.end(); ++it) {
+ if (it->first == key) return it;
+ }
+ return vec.end();
+}
+
+template <typename T>
+static void flatmap_upsert(std::vector<std::pair<Bytes, T>>& vec, const Bytes& key, const T& value) {
+ auto it = flatmap_find(vec, key);
+ if (it != vec.end()) {
+ it->second = value;
+ } else {
+ vec.push_back({key, value});
+ }
+}
+
+template <typename T>
+static bool flatmap_erase(std::vector<std::pair<Bytes, T>>& vec, const Bytes& key) {
+ auto it = flatmap_find(vec, key);
+ if (it != vec.end()) {
+ vec.erase(it);
+ return true;
+ }
+ return false;
+}
+
+// ── Flat-set helpers (vector<Bytes> replaces std::set<Bytes>) ──────────────
+
+static bool flatset_contains(const std::vector<Bytes>& vec, const Bytes& key) {
+ return std::find(vec.begin(), vec.end(), key) != vec.end();
+}
+
+static void flatset_insert(std::vector<Bytes>& vec, const Bytes& key) {
+ if (!flatset_contains(vec, key)) {
+ vec.push_back(key);
+ }
+}
+
+#if defined(INTERFACES_SET)
+///*static*/ std::set<std::reference_wrapper<const Interface>, std::less<const Interface>> Transport::_interfaces;
+/*static*/ std::set<std::reference_wrapper<Interface>, std::less<Interface>> Transport::_interfaces;
+#elif defined(INTERFACES_LIST)
+/*static*/ std::list<std::reference_wrapper<Interface>> Transport::_interfaces;
+#elif defined(INTERFACES_MAP)
+/*static*/ std::map<Bytes, Interface&> Transport::_interfaces;
+#endif
+#if defined(DESTINATIONS_SET)
+/*static*/ std::set<Destination> Transport::_destinations;
+#elif defined(DESTINATIONS_MAP)
+/*static*/ std::map<Bytes, Destination> Transport::_destinations;
+#endif
+/*static*/ std::set<Link> Transport::_pending_links;
+/*static*/ std::set<Link> Transport::_active_links;
+/*static*/ std::vector<Bytes> Transport::_packet_hashlist;
+/*static*/ std::vector<Bytes> Transport::_global_blobs;
+/*static*/ std::list<PacketReceipt> Transport::_receipts;
+
+/*static*/ std::map<Bytes, Transport::AnnounceEntry> Transport::_announce_table;
+/*static*/ std::map<Bytes, std::deque<Transport::PathEntry>> Transport::_destination_table;
+/*static*/ std::vector<std::pair<Bytes, Transport::ReverseEntry>> Transport::_reverse_table;
+/*static*/ std::map<Bytes, Transport::LinkEntry> Transport::_link_table;
+/*static*/ std::map<Bytes, Transport::AnnounceEntry> Transport::_held_announces;
+/*static*/ std::set<HAnnounceHandler> Transport::_announce_handlers;
+/*static*/ std::map<Bytes, Transport::TunnelEntry> Transport::_tunnels;
+/*static*/ std::vector<std::pair<Bytes, Transport::RateEntry>> Transport::_announce_rate_table;
+/*static*/ std::vector<std::pair<Bytes, double>> Transport::_path_requests;
+
+/*static*/ std::vector<std::pair<Bytes, Transport::PathRequestEntry>> Transport::_discovery_path_requests;
+/*static*/ std::set<Bytes> Transport::_discovery_pr_tags;
+
+/*static*/ std::set<Destination> Transport::_control_destinations;
+/*static*/ std::set<Bytes> Transport::_control_hashes;
+/*static*/ std::map<Bytes, Bytes> Transport::_pending_local_path_requests;
+
+/*static*/ double Transport::_start_time = 0.0;
+/*static*/ bool Transport::_jobs_locked = false;
+/*static*/ bool Transport::_jobs_running = false;
+/*static*/ float Transport::_job_interval = 0.250;
+/*static*/ double Transport::_jobs_last_run = 0.0;
+/*static*/ double Transport::_links_last_checked = 0.0;
+/*static*/ float Transport::_links_check_interval = 1.0;
+/*static*/ double Transport::_receipts_last_checked = 0.0;
+/*static*/ float Transport::_receipts_check_interval = 1.0;
+/*static*/ double Transport::_announces_last_checked = 0.0;
+/*static*/ float Transport::_announces_check_interval = 1.0;
+/*static*/ double Transport::_tables_last_culled = 0.0;
+// CBA MCU
+/*static*/ //float Transport::_tables_cull_interval = 5.0;
+/*static*/ float Transport::_tables_cull_interval = 60.0;
+/*static*/ bool Transport::_saving_path_table = false;
+// CBA ACCUMULATES
+// CBA MCU
+/*static*/ //uint16_t Transport::_hashlist_maxsize = 1000000;
+/*static*/ //uint16_t Transport::_hashlist_maxsize = 100;
+/*static*/ uint16_t Transport::_hashlist_maxsize = 100;
+// CBA ACCUMULATES
+// CBA MCU
+/*static*/ //uint16_t Transport::_max_pr_tags = 32000;
+/*static*/ uint16_t Transport::_max_pr_tags = 32;
+
+// CBA
+// CBA ACCUMULATES
+/*static*/ uint16_t Transport::_path_table_maxsize = 100;
+// CBA ACCUMULATES
+/*static*/ uint16_t Transport::_path_table_maxpersist = 100;
+/*static*/ double Transport::_last_saved = 0.0;
+/*static*/ float Transport::_save_interval = 3600.0;
+/*static*/ uint32_t Transport::_destination_table_crc = 0;
+
+/*static*/ Reticulum Transport::_owner({Type::NONE});
+
+// FIREWALL MODE Whitelist 1: addresses of local devices (from LoRa and LocalTCP interfaces)
+static std::vector<Bytes> _firewall_local_addresses;
+// FIREWALL MODE Whitelist 2: addresses mentioned in packets from local devices
+static std::vector<Bytes> _firewall_mentioned_addresses;
+static const uint16_t _firewall_maxsize = 200;
+
+// ── Whitelist helpers: enforce uniqueness on push (no per-node alloc) ──
+static void wl1_push(const Bytes& addr) {
+ if (!addr) return;
+ if (std::find(_firewall_local_addresses.begin(), _firewall_local_addresses.end(), addr)
+ == _firewall_local_addresses.end()) {
+ _firewall_local_addresses.push_back(addr);
+ }
+}
+static bool wl2_push(const Bytes& addr) {
+ if (!addr) return false;
+ if (std::find(_firewall_mentioned_addresses.begin(), _firewall_mentioned_addresses.end(), addr)
+ == _firewall_mentioned_addresses.end()) {
+ _firewall_mentioned_addresses.push_back(addr);
+ return true;
+ }
+ return false;
+}
+
+// ── Watched-destination logging ────────────────────────────────────────
+// Define WATCH_LOG to only log packets touching specific named destinations.
+// Comment out to restore full logging.
+#define WATCH_LOG
+#ifdef WATCH_LOG
+struct WatchedDest {
+ const char* name;
+ Bytes hash;
+};
+static const WatchedDest _watched[] = {
+ {"Meshchat", Bytes("\x13\xf4\xb1\x4d\xd3\x64\xa6\x72\xe8\x53\xa3\x7f\xb5\x34\x67\x8c")},
+ {"Sideband", Bytes("\x29\xf9\xa2\x0c\xb0\x47\x60\xed\xbc\x49\x7d\x66\x8c\x25\x5a\xb7")},
+ {"Browser", Bytes("\x03\x58\x19\x2f\x7b\x88\xb0\x78\x68\xe8\xd8\x32\xce\xa5\x1b\x7e")},
+};
+// Populated at runtime: ratchet hashes and link IDs → parent destination name
+static std::map<Bytes, const char*> _watch_aliases;
+
+static void watch_add_alias(const Bytes& alias, const char* name) {
+ if (alias && _watch_aliases.find(alias) == _watch_aliases.end()) {
+ _watch_aliases[alias] = name;
+ }
+}
+static const char* watch_resolve(const Bytes& addr) {
+ if (!addr) return nullptr;
+ for (auto& w : _watched) if (addr == w.hash) return w.name;
+ auto it = _watch_aliases.find(addr);
+ return (it != _watch_aliases.end()) ? it->second : nullptr;
+}
+// Check if a packet touches any watched destination; return name if so.
+static const char* watch_match(const Packet& packet) {
+ const char* n;
+ if ((n = watch_resolve(packet.destination_hash()))) return n;
+ if (packet.packet_type() == Type::Packet::LINKREQUEST) {
+ Bytes lid = Link::link_id_from_lr_packet(packet);
+ if ((n = watch_resolve(lid))) return n;
+ }
+ if (packet.data().size() >= Type::Identity::TRUNCATED_HASHLENGTH/8) {
+ if ((n = watch_resolve(packet.data().left(Type::Identity::TRUNCATED_HASHLENGTH/8)))) return n;
+ }
+ if (packet.packet_type() == Type::Packet::ANNOUNCE
+ && packet.context_flag() == Type::Packet::FLAG_SET
+ && packet.data().size() >= 116) {
+ Bytes rh = Identity::truncated_hash(packet.data().mid(84, 32));
+ if ((n = watch_resolve(rh))) return n;
+ }
+ if (packet.transport_id() && (n = watch_resolve(packet.transport_id()))) return n;
+ return nullptr;
+}
+// Helper: human-readable zone tag
+static inline const char* zone_tag(bool is_backbone) {
+ return is_backbone ? "WAN" : "LAN";
+}
+// Helper: short hash for logging
+static std::string short_hash(const Bytes& h) {
+ if (!h) return "none";
+ return h.toHex().substr(0,8);
+}
+#define WLOG(pkt, msg) do { \
+ const char* _wn = watch_match(pkt); \
+ if (_wn) { \
+ Interface _rif = pkt.receiving_interface(); \
+ bool _from_bb = _rif && is_backbone_interface(_rif); \
+ Serial.print("["); Serial.print(_wn); Serial.print("] "); \
+ Serial.printf("[%s] - FROM: %s (%s) - %s\n", \
+ pkt_type_name(pkt.packet_type()), \
+ _rif ? _rif.toString().c_str() : "?", \
+ zone_tag(_from_bb), \
+ std::string(msg).c_str()); \
+ } \
+} while(0)
+#else
+#define WLOG(fmt, ...) do {} while(0)
+#endif
+
+// FIREWALL MODE: Check if an interface is the backbone
+static bool is_backbone_interface(const Interface& iface) {
+ return iface.is_backbone();
+}
+// Human-readable packet type abbreviations
+static const char* pkt_type_name(uint8_t t) {
+ switch (t) {
+ case 0: return "DATA";
+ case 1: return "ANNC";
+ case 2: return "LREQ";
+ case 3: return "PROOF";
+ default: return "?";
+ }
+}
+// Human-readable context name for resource tracing
+static const char* ctx_name(uint8_t ctx) {
+ switch (ctx) {
+ case 0x01: return "RESOURCE";
+ case 0x02: return "RESOURCE_ADV";
+ case 0x03: return "RESOURCE_REQ";
+ case 0x04: return "RESOURCE_HMU";
+ case 0x05: return "RESOURCE_PRF";
+ case 0x06: return "RESOURCE_ICL";
+ case 0x07: return "RESOURCE_RCL";
+ default: return nullptr;
+ }
+}
+static inline bool is_resource_ctx(uint8_t ctx) {
+ return ctx >= 0x01 && ctx <= 0x07;
+}
+/*static*/ Identity Transport::_identity({Type::NONE});
+
+// CBA
+/*static*/ Transport::Callbacks Transport::_callbacks;
+
+// CBA Stats
+/*static*/ uint32_t Transport::_packets_sent = 0;
+/*static*/ uint32_t Transport::_packets_received = 0;
+/*static*/ uint32_t Transport::_destinations_added = 0;
+/*static*/ size_t Transport::_last_memory = 0;
+/*static*/ size_t Transport::_last_flash = 0;
+
+/*static*/ void Transport::start(const Reticulum& reticulum_instance) {
+ INFO("Transport starting...");
+ _jobs_running = true;
+ _owner = reticulum_instance;
+
+ // Initialize time-based variables *after* time offset update
+ _jobs_last_run = OS::time();
+ _links_last_checked = OS::time();
+ _receipts_last_checked = OS::time();
+ _announces_last_checked = OS::time();
+ _tables_last_culled = OS::time();
+ _last_saved = OS::time();
+
+ // ensure required directories exist
+ if (!OS::directory_exists(Reticulum::_cachepath)) {
+ VERBOSE("No cache directory, creating...");
+ if (!OS::create_directory(Reticulum::_cachepath)) {
+ HEAD("Failed to create cache directory — packet cache will be unavailable", RNS::LOG_CRITICAL);
+ }
+ }
+
+ if (!_identity) {
+ char transport_identity_path[Type::Reticulum::FILEPATH_MAXSIZE];
+ snprintf(transport_identity_path, Type::Reticulum::FILEPATH_MAXSIZE, "%s/transport_identity", Reticulum::_storagepath);
+ DEBUG("Checking for transport identity...");
+ try {
+ if (OS::file_exists(transport_identity_path)) {
+ _identity = Identity::from_file(transport_identity_path);
+ }
+
+ if (!_identity) {
+ VERBOSE("No valid Transport Identity in storage, creating...");
+ _identity = Identity();
+ _identity.to_file(transport_identity_path);
+ }
+ else {
+ VERBOSE("Loaded Transport Identity from storage");
+ }
+ }
+ catch (std::exception& e) {
+ ERRORF("Failed to check for transport identity, the contained exception was: %s", e.what());
+ }
+ }
+
+// TODO
+/*
+ packet_hashlist_path = Reticulum::storagepath + "/packet_hashlist";
+ if (!owner.is_connected_to_shared_instance()) {
+ if (os.path.isfile(packet_hashlist_path)) {
+ try {
+ }
+ catch (std::exception& e) {
+ ERRORF("Could not load packet hashlist from storage, the contained exception was: %s", e.what());
+ }
+ }
+ }
+*/
+
+ // Create transport-specific destination for path request
+ Destination path_request_destination({Type::NONE}, Type::Destination::IN, Type::Destination::PLAIN, APP_NAME, "path.request");
+ path_request_destination.set_packet_callback(path_request_handler);
+ // CBA ACCUMULATES
+ _control_destinations.insert(path_request_destination);
+ // CBA ACCUMULATES
+ _control_hashes.insert(path_request_destination.hash());
+ NOTICE("PATH-REQ-DST: " + path_request_destination.hash().toHex().substr(0,8) + " — path requests to this hash will seed whitelist");
+
+ // Create transport-specific destination for tunnel synthesize
+ Destination tunnel_synthesize_destination({Type::NONE}, Type::Destination::IN, Type::Destination::PLAIN, APP_NAME, "tunnel.synthesize");
+ tunnel_synthesize_destination.set_packet_callback(tunnel_synthesize_handler);
+ // CBA BUG?
+ // CBA ACCUMULATES
+ _control_destinations.insert(tunnel_synthesize_destination);
+ // CBA ACCUMULATES
+ _control_hashes.insert(tunnel_synthesize_destination.hash());
+ DEBUG("Created transport-specific tunnel synthesize destination " + tunnel_synthesize_destination.hash().toHex());
+
+ _jobs_running = false;
+
+ // CBA Threading
+
+ if (true) {
+ INFO("Transport mode is enabled");
+
+ // Read in path table and then write and clean in case any entries are invalid
+ read_path_table();
+ DEBUG("Writing path table and cleaning caches to clean-up any orphaned paths/files");
+ write_path_table();
+ clean_caches();
+
+ read_tunnel_table();
+
+ // Create transport-specific destination for probe requests
+ if (Reticulum::probe_destination_enabled()) {
+ Destination probe_destination(_identity, Type::Destination::IN, Type::Destination::SINGLE, APP_NAME, "probe");
+ probe_destination.accepts_links(false);
+ probe_destination.set_proof_strategy(Type::Destination::PROVE_ALL);
+ DEBUG("Created probe responder destination " + probe_destination.hash().toHex());
+ probe_destination.announce();
+ NOTICE("Transport Instance will respond to probe requests on " + probe_destination.toString());
+ }
+
+ VERBOSE("Transport instance " + _identity.toString() + " started");
+ _start_time = OS::time();
+ }
+
+// TODO
+//#ifndef NDEBUG
+ // CBA DEBUG
+ dump_stats();
+//#endif
+}
+
+/*static*/ void Transport::loop() {
+ if (OS::time() > (_jobs_last_run + _job_interval)) {
+ jobs();
+ _jobs_last_run = OS::time();
+ }
+}
+
+/*static*/ void Transport::jobs() {
+ //TRACE("Transport::jobs()");
+
+ // Heap telemetry: snapshot at jobs entry
+ size_t _jobs_heap_entry = OS::heap_available();
+
+ std::vector<Packet> outgoing;
+ std::set<Bytes> path_requests;
+ int count;
+ _jobs_running = true;
+
+ try {
+ if (!_jobs_locked) {
+
+ // Process active and pending link lists
+ if (OS::time() > (_links_last_checked + _links_check_interval)) {
+ std::set<Link> pending_links(_pending_links);
+ for (auto& link : pending_links) {
+ if (link.status() == Type::Link::CLOSED) {
+ // If we are not a Transport Instance, finding a pending link
+ // that was never activated will trigger removal of the path
+ // via the link's interface, leaving backup paths intact.
+ if (false) {
+ // Remove only the path on the failed link's interface,
+ // so other paths (e.g. LoRa) survive the failure.
+ Interface failed_iface = link.attached_interface();
+ if (failed_iface) {
+ DEBUG("Removing path to " + link.destination().hash().toHex() + " via " + failed_iface.toString() + " (link closed, backup paths survive)");
+ mark_path_unresponsive(link.destination().hash(), failed_iface.get_hash());
+ } else {
+ expire_path(link.destination().hash());
+ }
+
+ // If we are connected to a shared instance, it will take
+ // care of sending out a new path request. If not, we will
+ // send one directly.
+ if (!_owner.is_connected_to_shared_instance()) {
+ double last_path_request = 0;
+ auto iter = flatmap_find(_path_requests, link.destination().hash());
+ if (iter != _path_requests.end()) {
+ last_path_request = (*iter).second;
+ }
+
+ if ((OS::time() - last_path_request) > Type::Transport::PATH_REQUEST_MI) {
+ DEBUG("Trying to rediscover path for " + link.destination().hash().toHex() + " since an attempted link was never established");
+ //if (path_requests.find(link.destination().hash()) == path_requests.end()) {
+ if (path_requests.count(link.destination().hash()) == 0) {
+ // CBA ACCUMULATES
+ path_requests.insert(link.destination().hash());
+ }
+ }
+ }
+ }
+
+ _pending_links.erase(link);
+ }
+ }
+ std::set<Link> active_links(_active_links);
+ for (auto& link : active_links) {
+ if (link.status() == Type::Link::CLOSED) {
+ _active_links.erase(link);
+ }
+ }
+
+ _links_last_checked = OS::time();
+ }
+
+ // Process receipts list for timed-out packets
+ if (OS::time() > (_receipts_last_checked + _receipts_check_interval)) {
+ while (_receipts.size() > Type::Transport::MAX_RECEIPTS) {
+ PacketReceipt culled_receipt = _receipts.front();
+ _receipts.pop_front();
+ culled_receipt.set_timeout(-1);
+ culled_receipt.check_timeout();
+ }
+
+ std::list<PacketReceipt> cull_receipts;
+ for (auto& receipt : _receipts) {
+ receipt.check_timeout();
+ if (receipt.status() != Type::PacketReceipt::SENT) {
+ cull_receipts.push_back(receipt);
+ }
+ }
+ // CBA since modifying of collection while iterating is forbidden
+ for (auto& receipt : _receipts) {
+ cull_receipts.remove(receipt);
+ }
+
+ _receipts_last_checked = OS::time();
+ }
+
+ // Process announces needing retransmission
+ if (OS::time() > (_announces_last_checked + _announces_check_interval)) {
+ DEBUG("DIAG: ANNOUNCE-TBL size=" + std::to_string(_announce_table.size()));
+ for (auto& [destination_hash, announce_entry] : _announce_table) {
+ //for (auto& pair : _announce_table) {
+ // const auto& destination_hash = pair.first;
+ // auto& announce_entry = pair.second;
+//TRACE("[0] announce entry data size: " + std::to_string(announce_entry._packet.data().size()));
+ DEBUG("DIAG: ANNOUNCE-ENTRY dest=" + destination_hash.toHex().substr(0,8) + " retries=" + std::to_string(announce_entry._retries) + " block=" + std::to_string(announce_entry._block_rebroadcasts) + " timeout_in=" + std::to_string(announce_entry._retransmit_timeout - OS::time()));
+ if (announce_entry._retries > 0 && announce_entry._retries >= Type::Transport::LOCAL_REBROADCASTS_MAX) {
+ TRACE("Completed announce processing for " + destination_hash.toHex() + ", local rebroadcast limit reached");
+ // CBA OK to modify collection here since we're immediately exiting iteration
+ _announce_table.erase(destination_hash);
+ break;
+ }
+ else if (announce_entry._retries > Type::Transport::PATHFINDER_R) {
+ DEBUG("DIAG: ANNOUNCE-CULL dest=" + destination_hash.toHex().substr(0,8) + " retries=" + std::to_string(announce_entry._retries) + " reason=retry_limit");
+ TRACE("Completed announce processing for " + destination_hash.toHex() + ", retry limit reached");
+ // CBA OK to modify collection here since we're immediately exiting iteration
+ _announce_table.erase(destination_hash);
+ break;
+ }
+ else {
+ if (OS::time() > announce_entry._retransmit_timeout) {
+ TRACE("Performing announce processing for " + destination_hash.toHex() + "...");
+ announce_entry._retransmit_timeout = OS::time() + Type::Transport::PATHFINDER_G + Type::Transport::PATHFINDER_RW;
+ announce_entry._retries += 1;
+ Type::Packet::context_types announce_context = Type::Packet::CONTEXT_NONE;
+ if (announce_entry._block_rebroadcasts) {
+ announce_context = Type::Packet::PATH_RESPONSE;
+ }
+ Identity announce_identity(Identity::recall(announce_entry._packet.destination_hash()));
+ //Destination announce_destination(announce_identity, Type::Destination::OUT, Type::Destination::SINGLE, "unknown", "unknown");
+ //announce_destination.hash(announce_entry._packet.destination_hash());
+ Destination announce_destination(announce_identity, Type::Destination::OUT, Type::Destination::SINGLE, announce_entry._packet.destination_hash());
+ //P announce_destination.hexhash = announce_destination.hash.hex()
+
+//if (announce_entry._attached_interface) {
+//TRACE("[1] interface is valid");
+//TRACE("[1] interface: " + announce_entry._attached_interface.debugString());
+//TRACE("[1] interface: " + announce_entry._attached_interface.toString());
+//}
+ Packet new_packet(
+ announce_destination,
+ //{Type::NONE},
+ announce_entry._attached_interface,
+ //{Type::NONE},
+ announce_entry._packet.data(),
+ Type::Packet::ANNOUNCE,
+ announce_context,
+ Type::Transport::TRANSPORT,
+ Type::Packet::HEADER_2,
+ Transport::_identity.hash(),
+ true,
+ announce_entry._packet.context_flag()
+ );
+
+ new_packet.hops(announce_entry._hops);
+ if (announce_entry._block_rebroadcasts) {
+ DEBUG("Rebroadcasting announce as path response for " + announce_destination.hash().toHex() + " with hop count " + std::to_string(new_packet.hops()));
+ DEBUG("DIAG: SENDING PATH-RESP announce for " + announce_destination.hash().toHex().substr(0,8) + " hops=" + std::to_string(new_packet.hops()) + " attached=" + (announce_entry._attached_interface ? announce_entry._attached_interface.toString() : "NONE"));
+ }
+ else {
+ DEBUG("Rebroadcasting announce for " + announce_destination.hash().toHex() + " with hop count " + std::to_string(new_packet.hops()));
+ }
+
+ outgoing.push_back(new_packet);
+
+ // This handles an edge case where a peer sends a past
+ // request for a destination just after an announce for
+ // said destination has arrived, but before it has been
+ // rebroadcast locally. In such a case the actual announce
+ // is temporarily held, and then reinserted when the path
+ // request has been served to the peer.
+ auto iter =_held_announces.find(destination_hash);
+ if (iter != _held_announces.end()) {
+ auto held_entry = (*iter).second;
+ _held_announces.erase(iter);
+ //_announce_table[destination_hash] = held_entry;
+ //_announce_table.insert_or_assign({destination_hash, held_entry});
+ _announce_table.erase(destination_hash);
+ // CBA ACCUMULATES
+ _announce_table.insert({destination_hash, held_entry});
+ DEBUG("Reinserting held announce into table");
+ // CBA Must break after erase to avoid iterator invalidation
+ // (same pattern as the other two erases above in this loop)
+ break;
+ }
+ }
+ }
+ }
+
+ _announces_last_checked = OS::time();
+ }
+
+ // Cull held announces that are older than 60 seconds or if map exceeds cap
+ {
+ const double held_timeout = 60.0;
+ const uint16_t held_maxsize = 32;
+ auto iter = _held_announces.begin();
+ while (iter != _held_announces.end()) {
+ if (OS::time() > ((*iter).second._timestamp + held_timeout)) {
+ DEBUG("Culling expired held announce for " + (*iter).first.toHex());
+ iter = _held_announces.erase(iter);
+ } else {
+ ++iter;
+ }
+ }
+ while (_held_announces.size() > held_maxsize) {
+ DEBUG("Culling oldest held announce (cap " + std::to_string(held_maxsize) + ")");
+ _held_announces.erase(_held_announces.begin());
+ }
+ }
+
+ // Cull the packet hashlist if it has reached its max size
+ if (_packet_hashlist.size() > _hashlist_maxsize) {
+ size_t excess = _packet_hashlist.size() - _hashlist_maxsize;
+ _packet_hashlist.erase(_packet_hashlist.begin(), _packet_hashlist.begin() + excess);
+ }
+
+#ifdef FIREWALL_MODE
+ // Cull the firewall mentioned addresses if it has reached its max size
+ if (_firewall_mentioned_addresses.size() > _firewall_maxsize) {
+ size_t excess = _firewall_mentioned_addresses.size() - _firewall_maxsize;
+ _firewall_mentioned_addresses.erase(_firewall_mentioned_addresses.begin(), _firewall_mentioned_addresses.begin() + excess);
+ }
+
+ // Cull the firewall local addresses if it has reached its max size
+ if (_firewall_local_addresses.size() > _firewall_maxsize) {
+ size_t excess = _firewall_local_addresses.size() - _firewall_maxsize;
+ _firewall_local_addresses.erase(_firewall_local_addresses.begin(), _firewall_local_addresses.begin() + excess);
+ }
+#endif
+
+ // Cull the path request tags list if it has reached its max size
+ if (_discovery_pr_tags.size() > _max_pr_tags) {
+ std::set<Bytes>::iterator iter = _discovery_pr_tags.begin();
+ std::advance(iter, _discovery_pr_tags.size() - _max_pr_tags);
+ _discovery_pr_tags.erase(_discovery_pr_tags.begin(), iter);
+ }
+
+ if (OS::time() > (_tables_last_culled + _tables_cull_interval)) {
+
+ // CBA Disabled following since we're calling immediately after adding to path table now
+ // Cull the path table if it has reached its max size
+ //cull_path_table();
+
+ // Cull the reverse table according to timeout
+ std::vector<Bytes> stale_reverse_entries;
+ for (const auto& [packet_hash, reverse_entry] : _reverse_table) {
+ if (OS::time() > (reverse_entry._timestamp + REVERSE_TIMEOUT)) {
+ stale_reverse_entries.push_back(packet_hash);
+ }
+ }
+
+ // Cull the link table according to timeout
+ std::vector<Bytes> stale_links;
+ for (const auto& [link_id, link_entry] : _link_table) {
+ if (link_entry._validated) {
+ if (OS::time() > (link_entry._timestamp + LINK_TIMEOUT)) {
+ stale_links.push_back(link_id);
+ }
+ }
+ else {
+ if (OS::time() > link_entry._proof_timeout) {
+ stale_links.push_back(link_id);
+
+ double last_path_request = 0.0;
+ const auto& iter = flatmap_find(_path_requests, link_entry._destination_hash);
+ if (iter != _path_requests.end()) {
+ last_path_request = (*iter).second;
+ }
+
+ uint8_t lr_taken_hops = link_entry._hops;
+
+ bool path_request_throttle = (OS::time() - last_path_request) < PATH_REQUEST_MI;
+ bool path_request_conditions = false;
+
+ // If the path has been invalidated between the time of
+ // making the link request and now, try to rediscover it
+ if (!has_path(link_entry._destination_hash)) {
+ DEBUG("Trying to rediscover path for " + link_entry._destination_hash.toHex() + " since an attempted link was never established, and path is now missing");
+ path_request_conditions = true;
+ }
+
+ // If this link request was originated from a local client
+ // attempt to rediscover a path to the destination, if this
+ // has not already happened recently.
+ else if (!path_request_throttle && lr_taken_hops == 0) {
+ DEBUG("Trying to rediscover path for " + link_entry._destination_hash.toHex() + " since an attempted local client link was never established");
+ path_request_conditions = true;
+ }
+
+ // If the link destination was previously only 1 hop
+ // away, this likely means that it was local to one
+ // of our interfaces, and that it roamed somewhere else.
+ // In that case, try to discover a new path.
+ else if (!path_request_throttle && hops_to(link_entry._destination_hash) == 1) {
+ DEBUG("Trying to rediscover path for " + link_entry._destination_hash.toHex() + " since an attempted link was never established, and destination was previously local to an interface on this instance");
+ path_request_conditions = true;
+ }
+
+ // If the link destination was previously only 1 hop
+ // away, this likely means that it was local to one
+ // of our interfaces, and that it roamed somewhere else.
+ // In that case, try to discover a new path.
+ else if ( !path_request_throttle and lr_taken_hops == 1) {
+ DEBUG("Trying to rediscover path for " + link_entry._destination_hash.toHex() + " since an attempted link was never established, and link initiator is local to an interface on this instance");
+ path_request_conditions = true;
+ }
+
+ if (path_request_conditions) {
+ if (path_requests.count(link_entry._destination_hash) == 0) {
+ // CBA ACCUMULATES
+ path_requests.insert(link_entry._destination_hash);
+ }
+
+ if (false) {
+ // Remove the failed outbound interface's path,
+ // leaving backup paths (e.g. LoRa) intact so
+ // select_path() falls through naturally.
+ if (link_entry._outbound_interface) {
+ DEBUG("Removing path to " + link_entry._destination_hash.toHex() + " via " + link_entry._outbound_interface.toString() + " (link establishment failed, backup paths survive)");
+ mark_path_unresponsive(link_entry._destination_hash, link_entry._outbound_interface.get_hash());
+ } else {
+ expire_path(link_entry._destination_hash);
+ }
+ }
+ }
+ }
+ }
+ }
+
+ // Cull the path table: remove expired entries and empty deques
+ std::vector<Bytes> stale_paths;
+ {
+ double now = OS::time();
+ for (auto& [destination_hash, deque] : _destination_table) {
+ // Remove expired individual entries
+ deque.erase(std::remove_if(deque.begin(), deque.end(),
+ [now](const PathEntry& e) { return e.is_expired(now); }),
+ deque.end());
+
+ // Remove entries whose interface no longer exists
+ deque.erase(std::remove_if(deque.begin(), deque.end(),
+ [](const PathEntry& e) {
+ Interface iface = find_interface_from_hash(e.receiving_interface);
+ return !iface;
+ }), deque.end());
+
+ if (deque.empty()) {
+ stale_paths.push_back(destination_hash);
+ }
+ }
+ for (const auto& destination_hash : stale_paths) {
+ _destination_table.erase(destination_hash);
+ DEBUG("Path to " + destination_hash.toHex() + " timed out and was removed");
+ }
+ }
+
+ // Cull the pending discovery path requests table
+ std::vector<Bytes> stale_discovery_path_requests;
+ for (const auto& [destination_hash, path_entry] : _discovery_path_requests) {
+ if (OS::time() > path_entry._timeout) {
+ stale_discovery_path_requests.push_back(destination_hash);
+ NOTICE("DISCOVERY-EXPIRED: path request for " + destination_hash.toHex().substr(0,8) + " timed out after " + std::to_string((int)Type::Transport::PATH_REQUEST_TIMEOUT) + "s");
+ }
+ }
+
+ // Cull the path requests table (entries only needed for PATH_REQUEST_MI throttling, 20s)
+ {
+ std::vector<Bytes> stale_path_requests;
+ for (const auto& [destination_hash, timestamp] : _path_requests) {
+ if (OS::time() > (timestamp + PATH_REQUEST_MI * 2)) {
+ stale_path_requests.push_back(destination_hash);
+ }
+ }
+ for (const Bytes& destination_hash : stale_path_requests) {
+ flatmap_erase(_path_requests, destination_hash);
+ }
+ }
+
+ // Cull pending local path requests for interfaces that no longer exist
+ {
+ std::vector<Bytes> stale_plpr;
+ for (const auto& [destination_hash, iface_hash] : _pending_local_path_requests) {
+ if (_interfaces.count(iface_hash) == 0) {
+ stale_plpr.push_back(destination_hash);
+ }
+ }
+ for (const Bytes& destination_hash : stale_plpr) {
+ _pending_local_path_requests.erase(destination_hash);
+ }
+ }
+
+ // Cull the tunnel table
+ count = 0;
+ std::vector<Bytes> stale_tunnels;
+ for (const auto& [tunnel_id, tunnel_entry] : _tunnels) {
+ if (OS::time() > tunnel_entry._expires) {
+ stale_tunnels.push_back(tunnel_id);
+ TRACE("Tunnel " + tunnel_id.toHex() + " timed out and was removed");
+ }
+ else {
+ std::vector<Bytes> stale_tunnel_paths;
+ for (const auto& [destination_hash, destination_entry] : tunnel_entry._serialised_paths) {
+ if (OS::time() > (destination_entry._timestamp + DESTINATION_TIMEOUT)) {
+ stale_tunnel_paths.push_back(destination_hash);
+ TRACE("Tunnel path to " + destination_hash.toHex() + " timed out and was removed");
+ }
+ }
+
+ //for (const auto& destination_hash : stale_tunnel_paths) {
+ for (const Bytes& destination_hash : stale_tunnel_paths) {
+ const_cast<TunnelEntry&>(tunnel_entry)._serialised_paths.erase(destination_hash);
+ ++count;
+ }
+ }
+ }
+ if (count > 0) {
+ TRACE("Removed " + std::to_string(count) + " tunnel paths");
+ }
+
+ remove_reverse_entries(stale_reverse_entries);
+ remove_links(stale_links);
+ remove_paths(stale_paths);
+ remove_discovery_path_requests(stale_discovery_path_requests);
+ remove_tunnels(stale_tunnels);
+
+//#ifndef NDEBUG
+ dump_stats();
+//#endif
+
+ _tables_last_culled = OS::time();
+ }
+
+ // CBA Periodically persist data
+ //if (OS::time() > (_last_saved + _save_interval)) {
+ // persist_data();
+ // _last_saved = OS::time();
+ //}
+ }
+ else {
+ // Transport jobs were locked, do nothing
+ }
+ }
+ catch (std::exception& e) {
+ ERROR("An exception occurred while running Transport jobs.");
+ ERRORF("The contained exception was: %s", e.what());
+ }
+
+ _jobs_running = false;
+
+ // Heap telemetry: snapshot at jobs exit (MUTED)
+ // {
+ // size_t _jobs_heap_exit = OS::heap_available();
+ // int _jobs_delta = (int)_jobs_heap_exit - (int)_jobs_heap_entry;
+ // if (_jobs_delta < -64 || _jobs_delta > 64) {
+ // VERBOSEF("[HEAP-TEL] jobs: %d bytes (heap=%u)", _jobs_delta, (uint32_t)_jobs_heap_exit);
+ // }
+ // }
+
+ // CBA send announce retransmission packets
+ for (auto& packet : outgoing) {
+ DEBUG("DIAG: OUTGOING announce dest=" + packet.destination_hash().toHex().substr(0,8) + " type=" + std::to_string(packet.packet_type()) + " ctx=" + std::to_string(packet.context()) + " attached=" + (packet.attached_interface() ? packet.attached_interface().toString() : "NONE"));
+ packet.send();
+ }
+
+ // CBA send link-related path requests
+ for (auto& destination_hash : path_requests) {
+ request_path(destination_hash);
+ }
+}
+
+/*static*/ void Transport::transmit(Interface& interface, const Bytes& raw) {
+ TRACE("Transport::transmit()");
+ // CBA
+ if (_callbacks._transmit_packet) {
+ try {
+ _callbacks._transmit_packet(raw, interface);
+ }
+ catch (std::exception& e) {
+ DEBUG("Error while executing transmit packet callback. The contained exception was: " + std::string(e.what()));
+ }
+ }
+ try {
+ //if hasattr(interface, "ifac_identity") and interface.ifac_identity != None:
+ if (interface.ifac_identity()) {
+ // Calculate packet access code by signing the raw packet
+ // and taking the last ifac_size bytes of the signature
+ Bytes signature = interface.ifac_id().sign(raw);
+ Bytes ifac = signature.right(interface.ifac_size());
+
+ // Generate mask via HKDF
+ Bytes mask = Cryptography::hkdf(
+ raw.size() + interface.ifac_size(),
+ ifac,
+ interface.ifac_key()
+ );
+
+ // Set IFAC flag in header byte 0
+ uint8_t new_header0 = raw[0] | 0x80;
+ uint8_t new_header1 = raw[1];
+
+ // Assemble new payload: new_header + ifac + raw[2:]
+ Bytes new_raw;
+ new_raw.append(new_header0);
+ new_raw.append(new_header1);
+ new_raw.append(ifac);
+ new_raw.append(raw.mid(2));
+
+ // Mask payload
+ Bytes masked_raw;
+ for (size_t i = 0; i < new_raw.size(); i++) {
+ if (i == 0) {
+ // Mask first header byte, keep IFAC flag set
+ masked_raw.append((uint8_t)((new_raw[i] ^ mask[i]) | 0x80));
+ }
+ else if (i == 1 || i > (size_t)(interface.ifac_size() + 1)) {
+ // Mask second header byte and payload
+ masked_raw.append((uint8_t)(new_raw[i] ^ mask[i]));
+ }
+ else {
+ // Don't mask the IFAC itself
+ masked_raw.append(new_raw[i]);
+ }
+ }
+
+ // Send it
+ interface.send_outgoing(masked_raw);
+ }
+ else {
+ interface.send_outgoing(raw);
+ }
+ }
+ catch (std::exception& e) {
+ ERROR("Error while transmitting on " + interface.toString() + ". The contained exception was: " + e.what());
+ }
+}
+
+/*static*/ bool Transport::outbound(Packet& packet) {
+ TRACE("Transport::outbound()");
+ ++_packets_sent;
+
+ if (!packet.destination()) {
+ //throw std::invalid_argument("Can not send packet with no destination.");
+ ERROR("Can not send packet with no destination");
+ return false;
+ }
+
+ TRACE("Transport::outbound: destination=" + packet.destination_hash().toHex() + " hops=" + std::to_string(packet.hops()));
+
+ while (_jobs_running) {
+ TRACE("Transport::outbound: sleeping...");
+ OS::sleep(0.0005);
+ }
+
+ _jobs_locked = true;
+
+ bool sent = false;
+ double outbound_time = OS::time();
+
+ // Check if we have a known path for the destination in the path table
+ if (packet.packet_type() != Type::Packet::ANNOUNCE && packet.destination().type() != Type::Destination::PLAIN && packet.destination().type() != Type::Destination::GROUP && has_path(packet.destination_hash())) {
+ // ── Multi-path hedging ───────────────────────────────────────
+ // Walk all paths in score order (best first). Each path gets
+ // the packet. If the path is stale (multi-hop transport only,
+ // hops >= 2), fire a path_request to refresh it AND continue to
+ // the next-best path so delivery isn't gated on a dead route.
+ // The first fresh path stops the hedge.
+ TRACE("Transport::outbound: Path to destination is known, hedging...");
+ std::vector<PathEntry> paths = select_all_paths(packet.destination_hash());
+ for (auto& entry : paths) {
+ uint8_t hops = entry.hops;
+ Interface outbound_interface = find_interface_from_hash(entry.receiving_interface);
+ Bytes nh = entry.next_hop;
+
+ if (!outbound_interface) continue;
+
+ // ── Build and transmit on this path ─────────────────
+ if (hops > 1) {
+ TRACE("Forwarding packet to next closest interface...");
+ if (packet.header_type() == Type::Packet::HEADER_1) {
+ uint8_t new_flags = (Type::Packet::HEADER_2) << 6 | (Type::Transport::TRANSPORT) << 4 | (packet.flags() & 0b00001111);
+ Bytes new_raw(512);
+ new_raw << new_flags;
+ new_raw << packet.raw().mid(1,1);
+ new_raw << nh;
+ new_raw << packet.raw().mid(2);
+ transmit(outbound_interface, new_raw);
+ sent = true;
+ }
+ }
+ else if (hops == 1 && _owner.is_connected_to_shared_instance()) {
+ TRACE("Transport::outbound: Sending packet for directly connected interface to shared instance...");
+ if (packet.header_type() == Type::Packet::HEADER_1) {
+ uint8_t new_flags = (Type::Packet::HEADER_2) << 6 | (Type::Transport::TRANSPORT) << 4 | (packet.flags() & 0b00001111);
+ Bytes new_raw(512);
+ new_raw << new_flags;
+ new_raw << packet.raw().mid(1, 1);
+ new_raw << nh;
+ new_raw << packet.raw().mid(2);
+ transmit(outbound_interface, new_raw);
+ sent = true;
+ }
+ }
+ else {
+ TRACE("Transport::outbound: Sending packet over directly connected interface...");
+ transmit(outbound_interface, packet.raw());
+ sent = true;
+ }
+
+ // ── Staleness check (all hops) ────────────────────
+ // Applies to ALL paths, not just multi-hop. A hops=1 path
+ // through a migrated/disconnected client will go stale and
+ // the hedge falls through to the next-best path (e.g. backbone).
+ double now = OS::time();
+ bool is_stale = ((now - entry.timestamp) > (double)Type::Transport::PATH_STALE_THRESHOLD);
+
+ if (is_stale) {
+ // Fire path_request on this path's interface to probe liveness
+ request_path(packet.destination_hash(), outbound_interface);
+
+ // Shorten expiry so dead paths don't duplicate forever
+ auto iter = _destination_table.find(packet.destination_hash());
+ if (iter != _destination_table.end()) {
+ for (auto& e : iter->second) {
+ if (e.packet_hash == entry.packet_hash) {
+ double shortened = now + (double)Type::Transport::PATH_STALE_THRESHOLD;
+ if (shortened < e.expires) {
+ e.expires = shortened;
+ }
+ break;
+ }
+ }
+ }
+ // Continue to next-best path (hedge)
+ } else {
+ // Fresh path — delivery covered, stop hedging
+ break;
+ }
+ }
+ // ── No path succeeded ─────────────────────────────────
+ if (!sent) {
+ WLOG(packet, "TO: " + short_hash(packet.destination_hash()) + " (?) - NO-PATH hops=" + std::to_string(packet.hops()) + " — all paths failed, dropped");
+ }
+ }
+ // If we don't have a known path for the destination, we'll
+ // broadcast the packet on all outgoing interfaces, or the
+ // just the relevant interface if the packet has an attached
+ // interface, or belongs to a link.
+ else {
+ TRACE("Transport::outbound: Path to destination is unknown");
+ bool stored_hash = false;
+#if defined(INTERFACES_SET)
+ for (const Interface& interface : _interfaces) {
+#elif defined(INTERFACES_LIST)
+ for (Interface& interface : _interfaces) {
+#elif defined(INTERFACES_MAP)
+ for (auto& [hash, interface] : _interfaces) {
+#endif
+ TRACE("Transport::outbound: Checking interface " + interface.toString());
+ if (interface.OUT()) {
+ bool should_transmit = true;
+
+ if (packet.destination().type() == Type::Destination::LINK) {
+ if (!packet.destination_link()) throw std::invalid_argument("Packet is not associated with a Link");
+ if (packet.destination_link().status() == Type::Link::CLOSED) {
+ TRACE("Transport::outbound: Pscket destination is link-closed, not transmitting");
+ should_transmit = false;
+ }
+ // CBA Bug? Destination has no member attached_interface
+ }
+
+ if (packet.attached_interface() && interface != packet.attached_interface()) {
+ TRACE("Transport::outbound: Packet has wrong attached interface, not transmitting");
+ should_transmit = false;
+ }
+
+ if (packet.packet_type() == Type::Packet::ANNOUNCE) {
+#ifdef FIREWALL_MODE
+ // Firewall mode: announce broadcasts are always allowed.
+ // No mode gating, no bandwidth caps — LAN announces go to
+ // every interface including WAN, and whitelisted WAN
+ // announces go to every LAN interface.
+ if (packet.attached_interface() && interface == packet.attached_interface()) {
+ // If the announce is pinned to a specific interface,
+ // only transmit on that one.
+ } else if (!packet.attached_interface()) {
+ // No attached_interface means broadcast to all.
+ } else {
+ should_transmit = false;
+ }
+#else
+ if (!packet.attached_interface()) {
+ TRACE("Transport::outbound: Packet has no attached interface");
+ if (interface.mode() == Type::Interface::MODE_ACCESS_POINT) {
+ TRACE("Blocking announce broadcast on " + interface.toString() + " due to AP mode");
+ should_transmit = false;
+ }
+ else if (interface.mode() == Type::Interface::MODE_ROAMING) {
+ //local_destination = next((d for d in Transport.destinations if d.hash == packet.destination_hash), None)
+ //Destination local_destination({Type::NONE});
+#if defined(DESTINATIONS_SET)
+ bool found_local = false;
+ for (auto& destination : _destinations) {
+ if (destination.hash() == packet.destination_hash()) {
+ //local_destination = destination;
+ found_local = true;
+ break;
+ }
+ }
+ //if local_destination != None:
+ //if (local_destination) {
+ if (found_local) {
+#elif defined(DESTINATIONS_MAP)
+ auto iter = _destinations.find(packet.destination_hash());
+ //if (iter != _destinations.end()) {
+ // local_destination = (*iter).second;
+ //}
+ if (iter != _destinations.end()) {
+#endif
+ TRACE("Allowing announce broadcast on roaming-mode interface from instance-local destination");
+ }
+ else {
+ const Interface& from_interface = next_hop_interface(packet.destination_hash());
+ //if from_interface == None or not hasattr(from_interface, "mode"):
+ if (!from_interface || from_interface.mode() == Type::Interface::MODE_NONE) {
+ should_transmit = false;
+ if (!from_interface) {
+ TRACE("Blocking announce broadcast on " + interface.toString() + " since next hop interface doesn't exist");
+ }
+ else if (from_interface.mode() == Type::Interface::MODE_NONE) {
+ TRACE("Blocking announce broadcast on " + interface.toString() + " since next hop interface has no mode configured");
+ }
+ }
+ else {
+ if (from_interface.mode() == Type::Interface::MODE_ROAMING) {
+ TRACE("Blocking announce broadcast on " + interface.toString() + " due to roaming-mode next-hop interface");
+ should_transmit = false;
+ }
+ else if (from_interface.mode() == Type::Interface::MODE_BOUNDARY) {
+ TRACE("Blocking announce broadcast on " + interface.toString() + " due to boundary-mode next-hop interface");
+ should_transmit = false;
+ }
+ }
+ }
+ }
+ else if (interface.mode() == Type::Interface::MODE_BOUNDARY) {
+ //local_destination = next((d for d in Transport.destinations if d.hash == packet.destination_hash), None)
+ // next and filter pattern?
+ // next(iterable, default)
+ // list comprehension: [x for x in xyz if x in a]
+ // CBA TODO confirm that above pattern just selects the first matching destination
+#if defined(DESTINATIONS_SET)
+ //Destination local_destination({Type::Destination::NONE});
+ bool found_local = false;
+ for (auto& destination : _destinations) {
+ if (destination.hash() == packet.destination_hash()) {
+ //local_destination = destination;
+ found_local = true;
+ break;
+ }
+ }
+ //if local_destination != None:
+ //if (local_destination) {
+ if (found_local) {
+#elif defined(DESTINATIONS_MAP)
+ auto iter = _destinations.find(packet.destination_hash());
+ if (iter != _destinations.end()) {
+#endif
+ TRACE("Allowing announce broadcast on boundary-mode interface from instance-local destination");
+ }
+ else {
+ const Interface& from_interface = next_hop_interface(packet.destination_hash());
+ if (!from_interface || from_interface.mode() == Type::Interface::MODE_NONE) {
+ should_transmit = false;
+ if (!from_interface) {
+ TRACE("Blocking announce broadcast on " + interface.toString() + " since next hop interface doesn't exist");
+ }
+ else if (from_interface.mode() == Type::Interface::MODE_NONE) {
+ TRACE("Blocking announce broadcast on " + interface.toString() + " since next hop interface has no mode configured");
+ }
+ }
+ else {
+ if (from_interface.mode() == Type::Interface::MODE_ROAMING) {
+ TRACE("Blocking announce broadcast on " + interface.toString() + " due to roaming-mode next-hop interface");
+ should_transmit = false;
+ }
+ }
+ }
+ }
+ else {
+ // Currently, annouces originating locally are always
+ // allowed, and do not conform to bandwidth caps.
+ // TODO: Rethink whether this is actually optimal.
+ if (packet.hops() > 0) {
+
+// TODO
+ bool queued_announces = (interface.announce_queue().size() > 0);
+ if (!queued_announces && outbound_time > interface.announce_allowed_at()) {
+ uint16_t wait_time = 0;
+ if (interface.bitrate() > 0 && interface.announce_cap() > 0) {
+ uint16_t tx_time = (packet.raw().size() * 8) / interface.bitrate();
+ wait_time = (tx_time / interface.announce_cap());
+ }
+#if defined(INTERFACES_SET)
+ const_cast<Interface&>(interface).announce_allowed_at(outbound_time + wait_time);
+#else
+ interface.announce_allowed_at(outbound_time + wait_time);
+#endif
+ }
+ else {
+ should_transmit = false;
+ if (interface.announce_queue().size() < Type::Reticulum::MAX_QUEUED_ANNOUNCES) {
+ bool should_queue = true;
+ for (auto& entry : interface.announce_queue()) {
+ if (entry._destination == packet.destination_hash()) {
+ uint64_t emission_timestamp = announce_emitted(packet);
+ should_queue = false;
+ if (emission_timestamp > entry._emitted) {
+ entry._time = outbound_time;
+ entry._hops = packet.hops();
+ entry._emitted = emission_timestamp;
+ entry._raw = packet.raw();
+ }
+ break;
+ }
+ }
+ if (should_queue) {
+ RNS::AnnounceEntry entry(
+ packet.destination_hash(),
+ outbound_time,
+ packet.hops(),
+ announce_emitted(packet),
+ packet.raw()
+ );
+
+ queued_announces = (interface.announce_queue().size() > 0);
+#if defined(INTERFACES_SET)
+ const_cast<Interface&>(interface).add_announce(entry);
+#else
+ // CBA ACCUMULATES
+ interface.add_announce(entry);
+#endif
+
+ if (!queued_announces) {
+ double wait_time = std::max(interface.announce_allowed_at() - OS::time(), (double)0);
+
+ // CBA TODO THREAD?
+
+ if (wait_time < 1000) {
+ TRACE("Added announce to queue (height " + std::to_string(interface.announce_queue().size()) + ") on " + interface.toString() + " for processing in " + std::to_string((int)wait_time) + " ms");
+ }
+ else {
+ TRACE("Added announce to queue (height " + std::to_string(interface.announce_queue().size()) + ") on " + interface.toString() + " for processing in " + std::to_string(OS::round(wait_time/1000,1)) + " s");
+ }
+ }
+ else {
+ double wait_time = std::max(interface.announce_allowed_at() - OS::time(), (double)0);
+ if (wait_time < 1000) {
+ TRACE("Added announce to queue (height " + std::to_string(interface.announce_queue().size()) + ") on " + interface.toString() + " for processing in " + std::to_string((int)wait_time) + " ms");
+ }
+ else {
+ TRACE("Added announce to queue (height " + std::to_string(interface.announce_queue().size()) + ") on " + interface.toString() + " for processing in " + std::to_string(OS::round(wait_time/1000,1)) + " s");
+ }
+ }
+ }
+ }
+ else {
+ }
+ }
+ }
+ else {
+ }
+ }
+ }
+#endif // FIREWALL_MODE — announce gating
+ }
+
+ if (should_transmit) {
+ TRACE("Transport::outbound: Packet transmission allowed");
+ if (packet.packet_type() == Type::Packet::ANNOUNCE) {
+ DEBUG("DIAG: TX-OUT announce dest=" + packet.destination_hash().toHex().substr(0,8) + " on " + interface.toString());
+ }
+ if (!stored_hash) {
+ // CBA ACCUMULATES
+ _packet_hashlist.push_back(packet.packet_hash());
+ stored_hash = true;
+ }
+
+ // TODO: Re-evaluate potential for blocking
+ // def send_packet():
+ // Transport.transmit(interface, packet.raw)
+ // thread = threading.Thread(target=send_packet)
+ // thread.daemon = True
+ // thread.start()
+
+#if defined(INTERFACES_SET)
+ transmit(const_cast<Interface&>(interface), packet.raw());
+#else
+ transmit(interface, packet.raw());
+#endif
+ sent = true;
+ }
+ else {
+ TRACE("Transport::outbound: Packet transmission refused");
+ if (packet.packet_type() == Type::Packet::ANNOUNCE) {
+ DEBUG("DIAG: TX-REFUSED announce dest=" + packet.destination_hash().toHex().substr(0,8) + " refused on " + interface.toString());
+ }
+ }
+ }
+ }
+ }
+
+ if (sent) {
+ packet.sent(true);
+ packet.sent_at(OS::time());
+
+ // Don't generate receipt if it has been explicitly disabled
+ if (packet.create_receipt() &&
+ // Only generate receipts for DATA packets
+ packet.packet_type() == Type::Packet::DATA &&
+ // Don't generate receipts for PLAIN destinations
+ packet.destination().type() != Type::Destination::PLAIN &&
+ // Don't generate receipts for link-related packets
+ !(packet.context() >= Type::Packet::KEEPALIVE && packet.context() <= Type::Packet::LRPROOF) &&
+ // Don't generate receipts for resource packets
+ !(packet.context() >= Type::Packet::RESOURCE && packet.context() <= Type::Packet::RESOURCE_RCL)) {
+
+ PacketReceipt receipt(packet);
+ packet.receipt(receipt);
+ // CBA ACCUMULATES
+ _receipts.push_back(receipt);
+ }
+
+ cache_packet(packet);
+ }
+
+ _jobs_locked = false;
+ return sent;
+}
+
+/*static*/ bool Transport::packet_filter(const Packet& packet) {
+ // TODO: Think long and hard about this.
+ // Is it even strictly necessary with the current
+ // transport rules?
+ if (packet.context() == Type::Packet::KEEPALIVE) {
+ return true;
+ }
+ if (packet.context() == Type::Packet::RESOURCE_REQ) {
+ return true;
+ }
+ if (packet.context() == Type::Packet::RESOURCE_PRF) {
+ return true;
+ }
+ if (packet.context() == Type::Packet::RESOURCE) {
+ return true;
+ }
+ if (packet.context() == Type::Packet::CACHE_REQUEST) {
+ return true;
+ }
+ if (packet.context() == Type::Packet::CHANNEL) {
+ return true;
+ }
+
+ if (packet.destination_type() == Type::Destination::PLAIN) {
+ if (packet.packet_type() != Type::Packet::ANNOUNCE) {
+ if (packet.hops() > 1) {
+ DEBUG("Dropped PLAIN packet " + packet.packet_hash().toHex() + " with " + std::to_string(packet.hops()) + " hops");
+ return false;
+ }
+ else {
+ return true;
+ }
+ }
+ else {
+ DEBUG("Dropped invalid PLAIN announce packet");
+ return false;
+ }
+ }
+
+ if (packet.destination_type() == Type::Destination::GROUP) {
+ if (packet.packet_type() != Type::Packet::ANNOUNCE) {
+ if (packet.hops() > 1) {
+ DEBUG("Dropped GROUP packet " + packet.packet_hash().toHex() + " with " + std::to_string(packet.hops()) + " hops");
+ return false;
+ }
+ else {
+ return true;
+ }
+ }
+ else {
+ DEBUG("Dropped invalid GROUP announce packet");
+ return false;
+ }
+ }
+
+ if (std::find(_packet_hashlist.begin(), _packet_hashlist.end(), packet.packet_hash()) == _packet_hashlist.end()) {
+ TRACE("Transport::packet_filter: packet not previously seen");
+ return true;
+ }
+ else {
+ if (packet.packet_type() == Type::Packet::ANNOUNCE) {
+ if (packet.destination_type() == Type::Destination::SINGLE) {
+ TRACE("Transport::packet_filter: packet previously seen but is SINGLE ANNOUNCE");
+ return true;
+ }
+ else {
+ DEBUG("Dropped invalid announce packet");
+ return false;
+ }
+ }
+ }
+
+ DEBUG("FILTERED duplicate packet " + packet.packet_hash().toHex().substr(0,8) + " dest=" + packet.destination_hash().toHex().substr(0,8) + " type=" + std::to_string(packet.packet_type()) + " ctx=" + std::to_string(packet.context()));
+ DEBUG("DIAG: FILTERED dup dest=" + packet.destination_hash().toHex().substr(0,8) + " type=" + std::to_string(packet.packet_type()));
+ return false;
+}
+
+/*static*/ void Transport::inbound(const Bytes& raw_in, const Interface& interface /*= {Type::NONE}*/) {
+ TRACEF("Transport::inbound: received %d bytes", raw_in.size());
+ ++_packets_received;
+
+ // Heap telemetry: snapshot at entry
+ size_t _heap_at_entry = OS::heap_available();
+ // CBA
+ if (_callbacks._receive_packet) {
+ try {
+ _callbacks._receive_packet(raw_in, interface);
+ }
+ catch (std::exception& e) {
+ DEBUG("Error while executing receive packet callback. The contained exception was: " + std::string(e.what()));
+ }
+ }
+
+ // Mutable copy of raw data for IFAC processing
+ Bytes raw = raw_in;
+
+ // If interface access codes are enabled,
+ // we must authenticate each packet.
+ if (raw.size() > 2) {
+ if (interface && interface.ifac_identity()) {
+ // Check that IFAC flag is set
+ if ((raw[0] & 0x80) == 0x80) {
+ if (raw.size() > (size_t)(2 + interface.ifac_size())) {
+ // Extract IFAC
+ Bytes ifac = raw.mid(2, interface.ifac_size());
+
+ // Generate mask
+ Bytes mask = Cryptography::hkdf(
+ raw.size(),
+ ifac,
+ interface.ifac_key()
+ );
+
+ // Unmask payload
+ Bytes unmasked_raw;
+ for (size_t i = 0; i < raw.size(); i++) {
+ if (i <= 1 || i > (size_t)(interface.ifac_size() + 1)) {
+ // Unmask header bytes and payload
+ unmasked_raw.append((uint8_t)(raw[i] ^ mask[i]));
+ }
+ else {
+ // Don't unmask IFAC itself
+ unmasked_raw.append(raw[i]);
+ }
+ }
+ raw = unmasked_raw;
+
+ // Unset IFAC flag
+ uint8_t new_header0 = raw[0] & 0x7F;
+ uint8_t new_header1 = raw[1];
+
+ // Re-assemble packet without IFAC bytes
+ Bytes new_raw;
+ new_raw.append(new_header0);
+ new_raw.append(new_header1);
+ new_raw.append(raw.mid(2 + interface.ifac_size()));
+
+ // Calculate expected IFAC
+ Bytes expected_signature = interface.ifac_id().sign(new_raw);
+ Bytes expected_ifac = expected_signature.right(interface.ifac_size());
+
+ // Check it
+ if (ifac == expected_ifac) {
+ raw = new_raw;
+ }
+ else {
+ TRACE("Transport::inbound: IFAC authentication failed, dropping packet");
+ return;
+ }
+ }
+ else {
+ TRACE("Transport::inbound: packet too short for IFAC, dropping");
+ return;
+ }
+ }
+ else {
+ // If the IFAC flag is not set, but should be, drop the packet
+ TRACE("Transport::inbound: IFAC required but flag not set, dropping packet");
+ return;
+ }
+ }
+ else {
+ // If the interface does not have IFAC enabled,
+ // check the received packet IFAC flag.
+ if ((raw[0] & 0x80) == 0x80) {
+ // If the flag is set, drop the packet
+ TRACE("Transport::inbound: IFAC flag set but interface has no IFAC, dropping packet");
+ return;
+ }
+ }
+ }
+ else {
+ return;
+ }
+
+ while (_jobs_running) {
+ TRACE("Transport::inbound: sleeping...");
+ OS::sleep(0.0005);
+ }
+
+ if (!_identity) {
+ WARNING("Transport::inbound: No identity!");
+ return;
+ }
+
+ _jobs_locked = true;
+
+ Packet packet(RNS::Destination(RNS::Type::NONE), raw);
+ if (!packet.unpack()) {
+ WARNING("Transport::inbound: Packet unpack failed!");
+ return;
+ }
+#ifndef NDEBUG
+ TRACE("Transport::inbound: packet: " + packet.debugString());
+#endif
+
+ TRACE("Transport::inbound: destination=" + packet.destination_hash().toHex() + " hops=" + std::to_string(packet.hops()));
+
+ packet.receiving_interface(interface);
+ packet.hops(packet.hops() + 1);
+
+ // Match Python reference Transport.inbound() lines 1424-1427:
+ // decrement hop count for backbone interface packets, equivalent
+ // to Python's shared-instance/local-client decrement. Without
+ // this, the backbone adds an artificial extra hop that breaks
+ // the exact-match link transport checks (==) used by the reference.
+ if (interface && interface.is_backbone()) {
+ packet.hops(packet.hops() - 1);
+ }
+
+ // Helper: determine destination zone from path table / local dests
+ auto dest_zone = [&](const Bytes& hash) -> const char* {
+ if (!hash) return "?";
+ // Check local registered destinations
+#if defined(DESTINATIONS_MAP)
+ if (_destinations.find(hash) != _destinations.end()) return "LAN";
+#elif defined(DESTINATIONS_SET)
+ for (auto& d : _destinations) { if (d.hash() == hash) return "LAN"; }
+#endif
+ // Check control hashes
+ if (_control_hashes.find(hash) != _control_hashes.end()) return "CTL";
+ // Check path table
+ if (has_path(hash)) {
+ const PathEntry* entry = select_path(hash);
+ if (entry) {
+ Interface iface = find_interface_from_hash(entry->receiving_interface);
+ if (iface && iface.is_backbone()) return "WAN";
+ return "LAN";
+ }
+ }
+ return "?";
+ };
+
+// TODO
+ //if (packet_filter(packet)) {
+ // CBA
+ bool accept = true;
+ if (_callbacks._filter_packet) {
+ try {
+ accept = _callbacks._filter_packet(packet);
+ }
+ catch (std::exception& e) {
+ DEBUG("Error while executing filter packet callback. The contained exception was: " + std::string(e.what()));
+ }
+ }
+ if (accept) {
+ accept = packet_filter(packet);
+ }
+ if (accept) {
+ TRACE("Transport::inbound: Packet accepted by filter");
+
+ // FIREWALL MODE: Comprehensive firewall for backbone traffic.
+ //
+ // Three rules:
+ // 1. Addresses that touch local interfaces (RNode/LoRa, LocalTCP)
+ // get whitelisted on the backbone interface.
+ // 2. Every packet referencing a whitelisted address — ALL identifiers
+ // in that packet also get whitelisted (link hashes, announces,
+ // requests, proofs, truncated hashes, transport IDs, EVERYTHING).
+ // 3. Everything else gets blocked on the backbone interface.
+ //
+ // 4. TRANSITIVE WHITELIST: For every packet, extract ALL
+ // identifiable addresses. If ANY address is already in a
+ // whitelist, add ALL to the secondary whitelist. This covers
+ // link IDs, ratchet IDs, transport IDs, path request targets,
+ // and announce ratchets — in both directions.
+#ifdef FIREWALL_MODE
+ {
+ bool is_backbone = is_backbone_interface(packet.receiving_interface());
+
+ // ── Extract all addresses from this packet ──────────
+ // Two tiers:
+ // TIER 1 (seed + check): user-facing destinations —
+ // dest_hash, link_id, path_req_target, announce_ratchet.
+ // These get added to WL#2 on pass.
+ // TIER 2 (check only): relay infrastructure —
+ // truncated_hash, transport_id. These can PERMIT a
+ // packet through but are NEVER added to WL#2, because
+ // they represent relay nodes, not user traffic.
+ auto wl_add = [&](const Bytes& addr, const char* tag) {
+ if (!addr) return;
+ if (_control_hashes.find(addr) != _control_hashes.end()) return;
+ if (wl2_push(addr)) {
+ NOTICE("WL#2 ADD - " + addr.toHex().substr(0,8) + " (from " + zone_tag(strcmp(tag,"backbone")==0) + ")");
+ }
+ };
+ auto wl_known = [&](const Bytes& addr) -> bool {
+ return std::find(_firewall_local_addresses.begin(), _firewall_local_addresses.end(), addr) != _firewall_local_addresses.end()
+ || std::find(_firewall_mentioned_addresses.begin(), _firewall_mentioned_addresses.end(), addr) != _firewall_mentioned_addresses.end();
+ };
+
+ // Tier 1: user-facing addresses (seeded + checked)
+ std::vector<Bytes> addrs;
+ addrs.push_back(packet.destination_hash());
+ if (packet.packet_type() == Type::Packet::LINKREQUEST) {
+ addrs.push_back(Link::link_id_from_lr_packet(packet));
+ }
+ // Path request: target destination in first 16 bytes of data
+ if (_control_hashes.find(packet.destination_hash()) != _control_hashes.end()
+ && packet.data().size() >= Type::Identity::TRUNCATED_HASHLENGTH/8) {
+ addrs.push_back(packet.data().left(Type::Identity::TRUNCATED_HASHLENGTH/8));
+ }
+ // Announce: extract ratchet ID (offset 84, 32 bytes, context_flag=FLAG_SET)
+ if (packet.packet_type() == Type::Packet::ANNOUNCE
+ && packet.context_flag() == Type::Packet::FLAG_SET
+ && packet.data().size() >= 116) {
+ Bytes ratchet_pubkey = packet.data().mid(84, 32);
+ addrs.push_back(Identity::truncated_hash(ratchet_pubkey));
+ }
+
+ // ── Watched-destination alias tracking ────────────
+ // Populate ratchet and link aliases so WLOG resolves them.
+#ifdef WATCH_LOG
+ {
+ const char* wn = watch_resolve(packet.destination_hash());
+ if (wn) {
+ if (packet.packet_type() == Type::Packet::ANNOUNCE
+ && packet.context_flag() == Type::Packet::FLAG_SET
+ && packet.data().size() >= 116) {
+ Bytes rh = Identity::truncated_hash(packet.data().mid(84, 32));
+ watch_add_alias(rh, wn);
+ }
+ if (packet.packet_type() == Type::Packet::LINKREQUEST) {
+ Bytes lid = Link::link_id_from_lr_packet(packet);
+ watch_add_alias(lid, wn);
+ }
+ }
+ }
+#endif
+
+ // Tier 2: relay infrastructure (checked, NEVER seeded)
+ std::vector<Bytes> relay_addrs;
+ if (packet.header_type() == Type::Packet::HEADER_2 && packet.transport_id()) {
+ relay_addrs.push_back(packet.transport_id());
+ }
+ // Note: getTruncatedHash() is NOT included — it's a
+ // per-packet content hash, not a node identity. It can
+ // never match a whitelist entry and seeding it wastes a
+ // WL#2 slot with garbage.
+
+ // ── Transitive match: any Tier 1 or Tier 2 address known? ──
+ bool any_known = false;
+ for (auto& a : addrs) {
+ if (wl_known(a)) { any_known = true; break; }
+ }
+ if (!any_known) {
+ for (auto& a : relay_addrs) {
+ if (wl_known(a)) { any_known = true; break; }
+ }
+ }
+
+ if (is_backbone) {
+ // === BACKBONE PACKET ===
+ // Proofs are responses to traffic we already forwarded.
+ // They carry no source/destination identity — just a
+ // packet body hash. Exempt from whitelist; the reverse
+ // table handles routing, and forged proofs fail signature
+ // validation downstream.
+ if (packet.packet_type() == Type::Packet::PROOF) {
+ WLOG(packet, "TO: " + short_hash(packet.destination_hash()) + " (" + dest_zone(packet.destination_hash()) + ") - WL-PASS PROOF exempt hops=" + std::to_string(packet.hops()) + " sz=" + std::to_string(packet.raw().size()));
+ // Fall through to reverse-table routing below
+ }
+ // Only allowed if at least one address in the packet is
+ // already whitelisted (WL#1 or WL#2). No other gates.
+ else if (!any_known) {
+ WLOG(packet, "TO: " + short_hash(packet.destination_hash()) + " (" + dest_zone(packet.destination_hash()) + ") - WL-BLOCK hops=" + std::to_string(packet.hops()) + " sz=" + std::to_string(packet.raw().size()));
+ return;
+ }
+ // Transitive: add all addresses to WL#2
+ for (auto& a : addrs) { wl_add(a, "backbone"); }
+ WLOG(packet, "TO: " + short_hash(packet.destination_hash()) + " (" + dest_zone(packet.destination_hash()) + ") - WL-PASS hops=" + std::to_string(packet.hops()) + " sz=" + std::to_string(packet.raw().size()));
+ }
+ else {
+ // === LOCAL DEVICE PACKET ===
+ // Always whitelist ALL addresses from local packets.
+ // Local devices are trusted; their traffic seeds the
+ // secondary whitelist for return traffic from WAN.
+ for (auto& a : addrs) { wl_add(a, "local"); }
+ WLOG(packet, "TO: " + short_hash(packet.destination_hash()) + " (" + dest_zone(packet.destination_hash()) + ") - WL-PASS hops=" + std::to_string(packet.hops()) + " sz=" + std::to_string(packet.raw().size()));
+ }
+ }
+#endif
+
+ // Heap telemetry: snapshot after firewall filter (MUTED)
+ // {
+ // size_t _heap_after_boundary = OS::heap_available();
+ // int _boundary_delta = (int)_heap_after_boundary - (int)_heap_at_entry;
+ // if (_boundary_delta < -64) {
+ // VERBOSEF("[HEAP-TEL] firewall: %d bytes (bma=%u phl=%u)", _boundary_delta, _firewall_mentioned_addresses.size(), _packet_hashlist.size());
+ // }
+ // }
+
+ // By default, remember packet hashes to avoid routing
+ // loops in the network, using the packet filter.
+ bool remember_packet_hash = true;
+
+ // If this packet belongs to a link in our link table,
+ // we'll have to defer adding it to the filter list.
+ // In some cases, we might see a packet over a shared-
+ // medium interface, belonging to a link that transports
+ // or terminates with this instance, but before it would
+ // normally reach us. If the packet is appended to the
+ // filter list at this point, link transport will break.
+ if (_link_table.find(packet.destination_hash()) != _link_table.end()) {
+ remember_packet_hash = false;
+ }
+
+ // If this is a link request proof, don't add it until
+ // we are sure it's not actually somewhere else in the
+ // routing chain.
+ if (packet.packet_type() == Type::Packet::PROOF && packet.context() == Type::Packet::LRPROOF) {
+ remember_packet_hash = false;
+ }
+
+ if (remember_packet_hash) {
+ // CBA ACCUMULATES
+ _packet_hashlist.push_back(packet.packet_hash());
+ }
+ cache_packet(packet);
+
+#ifdef FIREWALL_MODE
+ // Log ALL non-announce packets arriving from local (non-backbone) interfaces
+ if (!is_backbone_interface(packet.receiving_interface()) && packet.packet_type() != Type::Packet::ANNOUNCE) {
+ WLOG(packet, "TO: " + short_hash(packet.destination_hash()) + " (" + dest_zone(packet.destination_hash()) + ") - LAN-IN hops=" + std::to_string(packet.hops()) + " sz=" + std::to_string(packet.raw().size()));
+ }
+ // Resource packet trace: log any resource-context packet entering inbound
+ if (is_resource_ctx(packet.context())) {
+ WLOG(packet, std::string(ctx_name(packet.context())) + " IN hops=" + std::to_string(packet.hops()) + " sz=" + std::to_string(packet.raw().size()) + " dst=" + short_hash(packet.destination_hash()));
+ }
+#endif
+
+ // Firewall mode: no local-client distinction. All devices are
+ // either LAN (non-backbone) or WAN (backbone).
+ const bool from_local_client = false;
+ const bool for_local_client = false;
+ const bool for_local_client_link = false;
+ const bool proof_for_local_client = false;
+
+ // Transport is always enabled in firewall mode
+ const bool transport_active = true;
+
+ // If packet is not destined for a local transport-specific destination
+ if (_control_hashes.find(packet.destination_hash()) == _control_hashes.end()) {
+ // PLAIN BROADCAST: delivered to all interfaces
+ if (packet.destination_type() == Type::Destination::PLAIN && packet.transport_type() == Type::Transport::BROADCAST) {
+#if defined(INTERFACES_SET)
+ for (const Interface& interface : _interfaces) {
+#elif defined(INTERFACES_LIST)
+ for (Interface& interface : _interfaces) {
+#elif defined(INTERFACES_MAP)
+ for (auto& [hash, interface] : _interfaces) {
+#endif
+ if (interface != packet.receiving_interface()) {
+ TRACE("Transport::inbound: Broadcasting packet on " + interface.toString());
+#if defined(INTERFACES_SET)
+ transmit(const_cast<Interface&>(interface), packet.raw());
+#else
+ transmit(interface, packet.raw());
+#endif
+ }
+ }
+ }
+ }
+
+ ////////////////////////////////
+ // TRANSPORT HANDLING
+ ////////////////////////////////
+
+ // General transport handling (always active in firewall mode)
+ {
+ TRACE("Transport::inbound: Performing general transport handling");
+
+ // If this is a cache request, and we can fullfill
+ // it, do so and stop processing. Otherwise resume
+ // normal processing.
+ if (packet.context() == Type::Packet::CACHE_REQUEST) {
+ if (cache_request_packet(packet)) {
+ TRACE("Transport::inbound: Cached packet");
+ return;
+ }
+ }
+
+ // If the packet is in transport, check whether we
+ // are the designated next hop, and process it
+ // accordingly if we are.
+ if (packet.transport_id() && packet.packet_type() != Type::Packet::ANNOUNCE) {
+ TRACE("Transport::inbound: Packet is in transport...");
+ if (packet.transport_id() == _identity.hash()) {
+ TRACE("Transport::inbound: We are designated next-hop");
+ if (has_path(packet.destination_hash())) {
+ TRACE("Transport::inbound: Found next-hop path to destination");
+ const PathEntry* entry = select_path(packet.destination_hash());
+ if (!entry) {
+ TRACE("Got packet in transport, but selected path expired. Dropping packet.");
+ return;
+ }
+ Bytes next_hop = entry->next_hop;
+ uint8_t remaining_hops = entry->hops;
+
+ // CBA RESERVE
+ //Bytes new_raw;
+ Bytes new_raw(512);
+ if (remaining_hops > 1) {
+ // Just increase hop count and transmit
+ //new_raw = packet.raw[0:1]
+ new_raw << packet.raw().left(1);
+ //new_raw += struct.pack("!B", packet.hops)
+ new_raw << packet.hops();
+ //new_raw += next_hop
+ new_raw << next_hop;
+ //new_raw += packet.raw[(RNS.Identity.TRUNCATED_HASHLENGTH//8)+2:]
+ new_raw << packet.raw().mid((Type::Identity::TRUNCATED_HASHLENGTH/8)+2);
+ }
+ else if (remaining_hops == 1) {
+ // Strip transport headers and transmit
+ //new_flags = (RNS.Packet.HEADER_1) << 6 | (Transport.BROADCAST) << 4 | (packet.flags & 0b00001111)
+ uint8_t new_flags = (Type::Packet::HEADER_1) << 6 | (Type::Transport::BROADCAST) << 4 | (packet.flags() & 0b00001111);
+ //new_raw = struct.pack("!B", new_flags)
+ new_raw << new_flags;
+ //new_raw += struct.pack("!B", packet.hops)
+ new_raw << packet.hops();
+ //new_raw += packet.raw[(RNS.Identity.TRUNCATED_HASHLENGTH//8)+2:]
+ new_raw << packet.raw().mid((Type::Identity::TRUNCATED_HASHLENGTH/8)+2);
+ }
+ else if (remaining_hops == 0) {
+ // Just increase hop count and transmit
+ //new_raw = packet.raw[0:1]
+ new_raw << packet.raw().left(1);
+ //new_raw += struct.pack("!B", packet.hops)
+ new_raw << packet.hops();
+ //new_raw += packet.raw[2:]
+ new_raw << packet.raw().mid(2);
+ }
+
+ Interface outbound_interface = find_interface_from_hash(entry->receiving_interface);
+
+#ifdef FIREWALL_MODE
+ // In firewall mode, never route a packet from backbone back to backbone.
+ // The upstream server sent us this packet because we are the next hop,
+ // so the destination must be on our local side.
+ if (is_backbone_interface(packet.receiving_interface()) && is_backbone_interface(outbound_interface)) {
+ // Path table incorrectly points to backbone. Skip forwarding.
+ }
+ else
+#endif
+ {
+ if (packet.packet_type() == Type::Packet::LINKREQUEST) {
+ TRACE("Transport::inbound: Packet is next-hop LINKREQUEST");
+ double now = OS::time();
+ double proof_timeout = now + Type::Link::ESTABLISHMENT_TIMEOUT_PER_HOP * std::max((uint8_t)1, remaining_hops);
+
+ // === MTU Clamping (v1.0.12) ===
+ // When forwarding a LINKREQUEST through this transport node,
+ // clamp the link MTU signalling to min(prev-hop, next-hop)
+ // interface HW_MTU. Without this, endpoints negotiate a
+ // segment size that exceeds this node's buffer capacity,
+ // causing silent truncation and resource transfer stalls.
+ uint16_t path_mtu = Link::mtu_from_lr_packet(packet);
+ if (path_mtu > 0) {
+ uint16_t ph_mtu = packet.receiving_interface().HW_MTU();
+ uint16_t nh_mtu = outbound_interface.HW_MTU();
+ if (nh_mtu == 0) {
+ DEBUG("MTU CLAMP: No next-hop HW MTU, stripping link MTU signalling");
+ new_raw = new_raw.left(new_raw.size() - Type::Link::LINK_MTU_SIZE);
+ } else if (!outbound_interface.AUTOCONFIGURE_MTU() && !outbound_interface.FIXED_MTU()) {
+ DEBUG("MTU CLAMP: Outbound interface doesn't support MTU config, stripping link MTU signalling");
+ new_raw = new_raw.left(new_raw.size() - Type::Link::LINK_MTU_SIZE);
+ } else {
+ if (nh_mtu < path_mtu || (ph_mtu > 0 && ph_mtu < path_mtu)) {
+ uint16_t clamped = std::min(nh_mtu, (ph_mtu > 0) ? ph_mtu : nh_mtu);
+ RNS::Type::Link::link_mode mode = Link::mode_from_lr_packet(packet);
+ Bytes clamped_mtu_bytes = Link::signalling_bytes(clamped, mode);
+ new_raw = new_raw.left(new_raw.size() - Type::Link::LINK_MTU_SIZE) + clamped_mtu_bytes;
+ DEBUGF("MTU CLAMP: path=%u ph=%u nh=%u -> clamped=%u", path_mtu, ph_mtu, nh_mtu, clamped);
+ }
+ }
+ }
+
+ LinkEntry link_entry(
+ now,
+ next_hop,
+ outbound_interface,
+ remaining_hops,
+ packet.receiving_interface(),
+ packet.hops(),
+ packet.destination_hash(),
+ false,
+ proof_timeout
+ );
+ // CBA ACCUMULATES
+ _link_table.insert({Link::link_id_from_lr_packet(packet), link_entry});
+ }
+ else {
+ TRACE("Transport::inbound: Packet is next-hop other type");
+ ReverseEntry reverse_entry(
+ packet.receiving_interface(),
+ outbound_interface,
+ OS::time()
+ );
+ // CBA ACCUMULATES
+ Bytes th = packet.getTruncatedHash();
+ flatmap_erase(_reverse_table, th); _reverse_table.push_back({th, reverse_entry});
+ wl2_push(th);
+ }
+ TRACE("Transport::outbound: Sending packet to next hop...");
+ WLOG(packet, "TO: " + short_hash(packet.destination_hash()) + " (" + dest_zone(packet.destination_hash()) + ") - FWD: " + outbound_interface.toString() + " (" + zone_tag(is_backbone_interface(outbound_interface)) + ") transport hops=" + std::to_string(remaining_hops));
+#if defined(INTERFACES_SET)
+ transmit(const_cast<Interface&>(outbound_interface), new_raw);
+#else
+ transmit(outbound_interface, new_raw);
+#endif
+ // Update timestamp on the selected path entry
+ {
+ auto iter = _destination_table.find(packet.destination_hash());
+ if (iter != _destination_table.end()) {
+ for (auto& e : iter->second) {
+ if (e.packet_hash == entry->packet_hash) {
+ e.timestamp = OS::time();
+ break;
+ }
+ }
+ }
+ }
+ } // firewall mode else
+ }
+ else {
+#ifdef FIREWALL_MODE
+ // No path to destination. Link_ids are handled by the
+ // link transport section below — only request a path
+ // for locally-originated packets to unknown destinations.
+ {
+ bool from_backbone = is_backbone_interface(packet.receiving_interface());
+ if (!from_backbone && _link_table.find(packet.destination_hash()) == _link_table.end()) {
+ WLOG(packet, "TO: " + short_hash(packet.destination_hash()) + " (" + dest_zone(packet.destination_hash()) + ") - NO-PATH next-hop, requesting");
+ request_path(packet.destination_hash(), packet.receiving_interface());
+ }
+ }
+#else
+ TRACE("Got packet in transport, but no known path to final destination " + packet.destination_hash().toHex() + ". Dropping packet.");
+#endif
+ }
+ }
+ else {
+ TRACE("Transport::inbound: We are not designated next-hop so not transporting");
+ }
+ }
+ else {
+ TRACE("Transport::inbound: Either packet is announce or packet has no next-hop (possibly for a local destination)");
+#ifdef FIREWALL_MODE
+ // FIREWALL MODE: If this packet came from a local interface and we
+ // have a path to the destination, wrap it with transport headers
+ // and forward it through the backbone as the first transport hop.
+ // Skip ANNOUNCE and PROOF packets — announces have their own handling,
+ // and link proofs (LRPROOF) are handled by the LRPROOF transport code.
+ // Also skip packets destined for locally-registered destinations
+ // (e.g. path request handler) — those must be processed locally.
+ bool is_local_destination = false;
+#if defined(DESTINATIONS_MAP)
+ is_local_destination = (_destinations.find(packet.destination_hash()) != _destinations.end());
+#elif defined(DESTINATIONS_SET)
+ for (auto& dest : _destinations) {
+ if (dest.hash() == packet.destination_hash()) { is_local_destination = true; break; }
+ }
+#endif
+ NOTICE("FWD-CHECK - FROM: " + packet.receiving_interface().toString() + " (" + zone_tag(is_backbone_interface(packet.receiving_interface())) + ") TO: " + short_hash(packet.destination_hash()) + " (" + dest_zone(packet.destination_hash()) + ") " + (is_local_destination ? "LOCAL" : "FWD"));
+ if (is_local_destination) {
+ NOTICE("SKIP-FWD - TO: " + short_hash(packet.destination_hash()) + " is local dest");
+ }
+ // Forward link proofs (delivery confirmations on established links)
+ if (!is_local_destination && packet.packet_type() == Type::Packet::PROOF) {
+ auto link_it = _link_table.find(packet.destination_hash());
+ if (link_it != _link_table.end()) {
+ LinkEntry& le = (*link_it).second;
+ Interface out_iface = find_interface_from_hash(le._outbound_interface.get_hash());
+ NOTICE("[PROOF] - FROM: " + packet.receiving_interface().toString() + " (" + zone_tag(is_backbone_interface(packet.receiving_interface())) + ") - TO: " + short_hash(packet.destination_hash()) + " (" + dest_zone(packet.destination_hash()) + ") - FWD: " + (out_iface ? out_iface.toString() : "?") + " (" + (out_iface ? zone_tag(is_backbone_interface(out_iface)) : "?") + ") LINK-PROOF");
+ if (out_iface) transmit(out_iface, packet.raw());
+ }
+ }
+ if (!is_local_destination && packet.packet_type() != Type::Packet::ANNOUNCE && packet.packet_type() != Type::Packet::PROOF) {
+ bool is_from_backbone = is_backbone_interface(packet.receiving_interface());
+ if (!is_from_backbone) {
+ const PathEntry* entry = select_path(packet.destination_hash());
+ if (entry) {
+ Interface outbound_interface = find_interface_from_hash(entry->receiving_interface);
+ NOTICE("[" + std::string(pkt_type_name(packet.packet_type())) + "] - FROM: " + packet.receiving_interface().toString() + " (" + zone_tag(is_backbone_interface(packet.receiving_interface())) + ") - TO: " + short_hash(packet.destination_hash()) + " (" + dest_zone(packet.destination_hash()) + ") - FWD: " + (outbound_interface ? outbound_interface.toString() : "?") + " (" + (outbound_interface ? zone_tag(is_backbone_interface(outbound_interface)) : "?") + ") hops=" + std::to_string(entry->hops));
+ if (!outbound_interface) {
+ // Path entry references an interface that no longer exists
+ // (e.g. after reboot with persistent path table).
+ // Request a fresh path instead of crashing.
+ DEBUG(" Saved path entry has stale interface hash — requesting fresh path");
+ request_path(packet.destination_hash());
+ return;
+ }
+ Bytes next_hop = entry->next_hop;
+ uint8_t remaining_hops = entry->hops;
+
+ // Build outgoing packet based on remaining hops,
+ // mirroring standard transport forwarding logic.
+ Bytes new_raw(512);
+ if (remaining_hops > 1) {
+ // Multi-hop: wrap with HEADER_2/TRANSPORT,
+ // setting transport_id = next_hop (the next
+ // transport node's identity hash from announce).
+ uint8_t new_flags = (Type::Packet::HEADER_2) << 6
+ | (Type::Transport::TRANSPORT) << 4
+ | (packet.flags() & 0b00001111);
+ new_raw << new_flags;
+ new_raw << packet.hops();
+ new_raw << next_hop; // insert transport_id
+ new_raw << packet.raw().mid(2); // destination_hash + payload
+ }
+ else {
+ // Single hop (remaining_hops <= 1): destination is
+ // directly reachable. Send as HEADER_1/BROADCAST
+ // (no transport header), matching standard transport
+ // behaviour for final-hop delivery.
+ uint8_t new_flags = (Type::Packet::HEADER_1) << 6
+ | (Type::Transport::BROADCAST) << 4
+ | (packet.flags() & 0b00001111);
+ new_raw << new_flags;
+ new_raw << packet.hops();
+ new_raw << packet.raw().mid(2); // destination_hash + payload
+ }
+
+ // Create link_table or reverse_table entry for return path
+ if (packet.packet_type() == Type::Packet::LINKREQUEST) {
+ double now = OS::time();
+ double proof_timeout = now + Type::Link::ESTABLISHMENT_TIMEOUT_PER_HOP
+ * std::max((uint8_t)1, remaining_hops);
+
+ // === MTU Clamping (v1.0.12) ===
+ uint16_t path_mtu = Link::mtu_from_lr_packet(packet);
+ if (path_mtu > 0) {
+ uint16_t ph_mtu = packet.receiving_interface().HW_MTU();
+ uint16_t nh_mtu = outbound_interface.HW_MTU();
+ if (nh_mtu == 0) {
+ new_raw = new_raw.left(new_raw.size() - Type::Link::LINK_MTU_SIZE);
+ } else if (!outbound_interface.AUTOCONFIGURE_MTU() && !outbound_interface.FIXED_MTU()) {
+ new_raw = new_raw.left(new_raw.size() - Type::Link::LINK_MTU_SIZE);
+ } else if (nh_mtu < path_mtu || (ph_mtu > 0 && ph_mtu < path_mtu)) {
+ uint16_t clamped = std::min(nh_mtu, (ph_mtu > 0) ? ph_mtu : nh_mtu);
+ RNS::Type::Link::link_mode mode = Link::mode_from_lr_packet(packet);
+ Bytes clamped_mtu_bytes = Link::signalling_bytes(clamped, mode);
+ new_raw = new_raw.left(new_raw.size() - Type::Link::LINK_MTU_SIZE) + clamped_mtu_bytes;
+ DEBUGF("MTU CLAMP: local->backbone path=%u ph=%u nh=%u -> %u", path_mtu, ph_mtu, nh_mtu, clamped);
+ }
+ }
+
+ LinkEntry link_entry(
+ now, next_hop, outbound_interface, remaining_hops,
+ packet.receiving_interface(), packet.hops(),
+ packet.destination_hash(), false, proof_timeout
+ );
+ // Each LINKREQUEST gets its own entry (unique link_id)
+ _link_table.insert({Link::link_id_from_lr_packet(packet), link_entry});
+ }
+ else {
+ ReverseEntry reverse_entry(
+ packet.receiving_interface(), outbound_interface, OS::time()
+ );
+ Bytes th = packet.getTruncatedHash();
+ flatmap_erase(_reverse_table, th); _reverse_table.push_back({th, reverse_entry});
+ // Whitelist the truncated hash so the return proof
+ // from the backbone isn't blocked by the firewall.
+ wl2_push(th);
+ }
+
+ DEBUG(" Forwarding local packet (" + std::to_string(remaining_hops) + " hops, " + std::to_string(new_raw.size()) + " bytes) to " + outbound_interface.toString() + " for " + packet.destination_hash().toHex());
+ transmit(outbound_interface, new_raw);
+ // Update timestamp on selected path entry
+ {
+ auto iter = _destination_table.find(packet.destination_hash());
+ if (iter != _destination_table.end()) {
+ for (auto& e : iter->second) {
+ if (e.packet_hash == entry->packet_hash) {
+ e.timestamp = OS::time();
+ break;
+ }
+ }
+ }
+ }
+ }
+ else {
+ // Only request path if the destination is not a link_id
+ // (link data packets are handled by link transport below,
+ // not by standard transport path lookup).
+ if (_link_table.find(packet.destination_hash()) == _link_table.end()) {
+ WLOG(packet, "TO: " + short_hash(packet.destination_hash()) + " (" + dest_zone(packet.destination_hash()) + ") - NO-PATH requesting");
+ request_path(packet.destination_hash(), packet.receiving_interface());
+ }
+ }
+ }
+ else {
+ // FIREWALL MODE REVERSE: Packet came from backbone,
+ // check if destination is a local LoRa device and forward it.
+ if (std::find(_firewall_local_addresses.begin(), _firewall_local_addresses.end(), packet.destination_hash()) != _firewall_local_addresses.end()) {
+ const PathEntry* entry2 = select_path(packet.destination_hash());
+ if (entry2) {
+ Bytes next_hop2 = entry2->next_hop;
+ uint8_t remaining_hops2 = entry2->hops;
+ Interface outbound_interface2 = find_interface_from_hash(entry2->receiving_interface);
+
+ // Build properly routed packet based on remaining hops,
+ // mirroring the standard transport forwarding logic.
+ Bytes new_raw(512);
+ if (remaining_hops2 > 1) {
+ // Multi-hop: wrap with HEADER_2/TRANSPORT
+ uint8_t new_flags = (Type::Packet::HEADER_2) << 6
+ | (Type::Transport::TRANSPORT) << 4
+ | (packet.flags() & 0b00001111);
+ new_raw << new_flags;
+ new_raw << packet.hops();
+ new_raw << next_hop2; // transport_id
+ new_raw << packet.raw().mid(2); // destination_hash + payload
+ }
+ else {
+ // Direct or single-hop: send as HEADER_1
+ new_raw << packet.raw().left(1);
+ new_raw << packet.hops();
+ new_raw << packet.raw().mid(2);
+ }
+
+ // Create link_table or reverse_table entry for return traffic
+ if (packet.packet_type() == Type::Packet::LINKREQUEST) {
+ double now = OS::time();
+ double proof_timeout = now + Type::Link::ESTABLISHMENT_TIMEOUT_PER_HOP
+ * std::max((uint8_t)1, remaining_hops2);
+
+ // === MTU Clamping (v1.0.12) ===
+ uint16_t path_mtu = Link::mtu_from_lr_packet(packet);
+ if (path_mtu > 0) {
+ uint16_t ph_mtu = packet.receiving_interface().HW_MTU();
+ uint16_t nh_mtu = outbound_interface2.HW_MTU();
+ if (nh_mtu == 0) {
+ new_raw = new_raw.left(new_raw.size() - Type::Link::LINK_MTU_SIZE);
+ } else if (!outbound_interface2.AUTOCONFIGURE_MTU() && !outbound_interface2.FIXED_MTU()) {
+ new_raw = new_raw.left(new_raw.size() - Type::Link::LINK_MTU_SIZE);
+ } else if (nh_mtu < path_mtu || (ph_mtu > 0 && ph_mtu < path_mtu)) {
+ uint16_t clamped = std::min(nh_mtu, (ph_mtu > 0) ? ph_mtu : nh_mtu);
+ RNS::Type::Link::link_mode mode = Link::mode_from_lr_packet(packet);
+ Bytes clamped_mtu_bytes = Link::signalling_bytes(clamped, mode);
+ new_raw = new_raw.left(new_raw.size() - Type::Link::LINK_MTU_SIZE) + clamped_mtu_bytes;
+ DEBUGF("MTU CLAMP: backbone->local path=%u ph=%u nh=%u -> %u", path_mtu, ph_mtu, nh_mtu, clamped);
+ }
+ }
+
+ LinkEntry link_entry(
+ now, next_hop2, outbound_interface2, remaining_hops2,
+ packet.receiving_interface(), packet.hops(),
+ packet.destination_hash(), false, proof_timeout
+ );
+ _link_table.insert({Link::link_id_from_lr_packet(packet), link_entry});
+ DEBUG(" Created link_table entry for backbone LINKREQUEST, link_id=" + Link::link_id_from_lr_packet(packet).toHex());
+ }
+ else {
+ ReverseEntry reverse_entry(
+ packet.receiving_interface(), outbound_interface2, OS::time()
+ );
+ flatmap_erase(_reverse_table, packet.getTruncatedHash()); _reverse_table.push_back({packet.getTruncatedHash(), reverse_entry});
+ }
+
+ DEBUG(" Forwarding backbone packet (" + std::to_string(remaining_hops2) + " hops) to local device for " + packet.destination_hash().toHex() + " via " + outbound_interface2.toString());
+ transmit(outbound_interface2, new_raw);
+ // Update timestamp on selected path entry
+ {
+ auto iter = _destination_table.find(packet.destination_hash());
+ if (iter != _destination_table.end()) {
+ for (auto& e : iter->second) {
+ if (e.packet_hash == entry2->packet_hash) {
+ e.timestamp = OS::time();
+ break;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+#endif
+ }
+
+ // Link transport handling. Directs packets according
+ // to entries in the link tables
+ if (packet.packet_type() != Type::Packet::ANNOUNCE && packet.packet_type() != Type::Packet::LINKREQUEST && packet.context() != Type::Packet::LRPROOF) {
+ TRACE("Transport::inbound: Checking if packet is meant for link transport...");
+ auto link_iter = _link_table.find(packet.destination_hash());
+ if (link_iter != _link_table.end()) {
+ LinkEntry& link_entry = (*link_iter).second;
+ NOTICE("LINK-XPORT: pkt " + packet.destination_hash().toHex().substr(0,8) + " type=" + std::to_string(packet.packet_type()) + " ctx=" + std::to_string(packet.context()) + " hops=" + std::to_string(packet.hops()) + " from=" + packet.receiving_interface().toString() + " sz=" + std::to_string(packet.raw().size()));
+ NOTICE("LINK-XPORT: entry hops=" + std::to_string(link_entry._hops) + " rem=" + std::to_string(link_entry._remaining_hops) + " recv=" + link_entry._receiving_interface.toString() + " out=" + link_entry._outbound_interface.toString() + " val=" + std::to_string(link_entry._validated));
+ // If receiving and outbound interface is
+ // the same for this link, direction doesn't
+ // matter, and we simply send the packet on.
+ Interface outbound_interface({Type::NONE});
+ if (link_entry._outbound_interface == link_entry._receiving_interface) {
+ // But check that taken hops matches one
+ // of the expectede values.
+ if (packet.hops() == link_entry._remaining_hops || packet.hops() == link_entry._hops) {
+ TRACE("Transport::inbound: Link inbound/outbound interfaes are same, transporting on same interface");
+ outbound_interface = link_entry._outbound_interface;
+ }
+ }
+ else {
+ // If interfaces differ, we transmit on
+ // the opposite interface of what the
+ // packet was received on.
+ if (packet.receiving_interface() == link_entry._outbound_interface) {
+ // Reverse direction (from destination back toward initiator).
+ // Match Python reference Transport.py line 1611: exact match.
+
+
+ if (packet.hops() == link_entry._remaining_hops) {
+ outbound_interface = link_entry._receiving_interface;
+ }
+ else {
+ NOTICE("LINK-XPORT: HOP MISMATCH (from outbound) pkt.hops=" + std::to_string(packet.hops()) + " expected=" + std::to_string(link_entry._remaining_hops));
+ if (is_resource_ctx(packet.context())) {
+ WLOG(packet, std::string(ctx_name(packet.context())) + " HOP-MISMATCH rev pkt.hops=" + std::to_string(packet.hops()) + " expected=" + std::to_string(link_entry._remaining_hops));
+ }
+ }
+ }
+ else if (packet.receiving_interface() == link_entry._receiving_interface) {
+ // Also check that expected hop count matches
+ if (packet.hops() == link_entry._hops) {
+ outbound_interface = link_entry._outbound_interface;
+ }
+ else {
+ NOTICE("LINK-XPORT: HOP MISMATCH (from receiving) pkt.hops=" + std::to_string(packet.hops()) + " expected=" + std::to_string(link_entry._hops));
+ if (is_resource_ctx(packet.context())) {
+ WLOG(packet, std::string(ctx_name(packet.context())) + " HOP-MISMATCH fwd pkt.hops=" + std::to_string(packet.hops()) + " expected=" + std::to_string(link_entry._hops));
+ }
+ }
+ }
+ else {
+ NOTICE("LINK-XPORT: IFACE MISMATCH recv=" + packet.receiving_interface().toString() + " entry_recv=" + link_entry._receiving_interface.toString() + " entry_out=" + link_entry._outbound_interface.toString());
+ }
+ }
+
+ if (outbound_interface) {
+ NOTICE("LINK-XPORT: FWD to " + outbound_interface.toString());
+ // Add this packet to the filter hashlist now that
+ // we have determined it's actually our turn to
+ // process it (matching Python Transport line 1544).
+ _packet_hashlist.push_back(packet.packet_hash());
+ // CBA RESERVE
+ //Bytes new_raw;
+ Bytes new_raw(512);
+ //new_raw = packet.raw[0:1]
+ new_raw << packet.raw().left(1);
+ //new_raw += struct.pack("!B", packet.hops)
+ new_raw << packet.hops();
+ //new_raw += packet.raw[2:]
+ new_raw << packet.raw().mid(2);
+ transmit(outbound_interface, new_raw);
+ link_entry._timestamp = OS::time();
+ }
+ else {
+ NOTICE("LINK-XPORT: DROPPED (no outbound interface resolved)");
+ }
+ }
+ else {
+ NOTICE("LINK-XPORT: dest " + packet.destination_hash().toHex().substr(0,8) + " NOT in link_table (size=" + std::to_string(_link_table.size()) + ")");
+ }
+ }
+ }
+
+ ////////////////////////////////
+ // LOCAL HANDLING
+ ////////////////////////////////
+
+ // Announce handling. Handles logic related to incoming
+ // announces, queueing rebroadcasts of these, and removal
+ // of queued announce rebroadcasts once handed to the next node.
+ if (packet.packet_type() == Type::Packet::ANNOUNCE) {
+ TRACE("Transport::inbound: Packet is ANNOUNCE");
+ DEBUG("DIAG: ANNOUNCE-IN dest=" + packet.destination_hash().toHex().substr(0,8) + " iface=" + packet.receiving_interface().toString() + " hops=" + std::to_string(packet.hops()));
+ Bytes received_from;
+#if defined(DESTINATIONS_SET)
+ //Destination local_destination({Type::NONE});
+ bool found_local = false;
+ for (auto& destination : _destinations) {
+ if (destination.hash() == packet.destination_hash()) {
+ //local_destination = destination;
+ found_local = true;
+ break;
+ }
+ }
+ //if local_destination == None and RNS.Identity.validate_announce(packet):
+ //if (!local_destination && Identity::validate_announce(packet)) {
+ if (!found_local && Identity::validate_announce(packet)) {
+#elif defined(DESTINATIONS_MAP)
+ auto iter = _destinations.find(packet.destination_hash());
+ if (iter == _destinations.end() && Identity::validate_announce(packet)) {
+#endif
+ TRACE("Transport::inbound: Packet is announce for non-local destination, processing...");
+ if (packet.transport_id()) {
+ received_from = packet.transport_id();
+
+ // Check if this is a next retransmission from
+ // another node. If it is, we're removing the
+ // announce in question from our pending table
+ if (Reticulum::transport_enabled() && _announce_table.count(packet.destination_hash()) > 0) {
+ //AnnounceEntry& announce_entry = _announce_table[packet.destination_hash()];
+ AnnounceEntry& announce_entry = (*_announce_table.find(packet.destination_hash())).second;
+
+ if ((packet.hops() - 1) == announce_entry._hops) {
+ DEBUG("Heard a local rebroadcast of announce for " + packet.destination_hash().toHex());
+ announce_entry._local_rebroadcasts += 1;
+ if (announce_entry._local_rebroadcasts >= LOCAL_REBROADCASTS_MAX) {
+ DEBUG("Max local rebroadcasts of announce for " + packet.destination_hash().toHex() + " reached, dropping announce from our table");
+ _announce_table.erase(packet.destination_hash());
+ }
+ }
+
+ if ((packet.hops() - 1) == (announce_entry._hops + 1) && announce_entry._retries > 0) {
+ double now = OS::time();
+ if (now < announce_entry._timestamp) {
+ DEBUG("Rebroadcasted announce for " + packet.destination_hash().toHex() + " has been passed on to another node, no further tries needed");
+ _announce_table.erase(packet.destination_hash());
+ }
+ }
+ }
+ }
+ else {
+ received_from = packet.destination_hash();
+ }
+
+ // Check if this announce should be inserted into
+ // announce and destination tables
+ bool should_add = false;
+
+ // First, check that the announce is not for a destination
+ // local to this system, and that hops are less than the max
+ // CBA TODO determine why packet destination hash is being searched in destinations again since we entered this logic becuase it did not exist above
+ //if (not any(packet.destination_hash == d.hash for d in Transport.destinations) and packet.hops < Transport.PATHFINDER_M+1):
+#if defined(DESTINATIONS_SET)
+ bool found_local = false;
+ for (auto& destination : _destinations) {
+ if (destination.hash() == packet.destination_hash()) {
+ found_local = true;
+ break;
+ }
+ }
+ if (!found_local && packet.hops() < (PATHFINDER_M+1)) {
+#elif defined(DESTINATIONS_MAP)
+ auto iter = _destinations.find(packet.destination_hash());
+ if (iter == _destinations.end() && packet.hops() < (PATHFINDER_M+1)) {
+#endif
+ // ── Multi-Path Path Table Insertion ──────────────────────
+ // 2 leaf outcomes instead of 11: replay check only.
+ // All valid announces coexist; select_path() picks best at forwarding time.
+ Bytes random_blob = packet.data().mid(Type::Identity::KEYSIZE/8 + Type::Identity::NAME_HASH_LENGTH/8, Type::Identity::RANDOM_HASH_LENGTH/8);
+
+ // Step 1: Anti-replay via global blob set
+ if (std::find(_global_blobs.begin(), _global_blobs.end(), random_blob) != _global_blobs.end()) {
+ should_add = false;
+ } else {
+ should_add = true;
+ _global_blobs.push_back(random_blob);
+ // Cap global_blobs at MAX_GLOBAL_BLOBS (FIFO eviction)
+ if (_global_blobs.size() > MAX_GLOBAL_BLOBS) {
+ _global_blobs.erase(_global_blobs.begin());
+ }
+ }
+
+ // NOTE: The boundary-mode announce echo blocking that was here
+ // has been removed. The standard random_blob check above
+ // already prevents echoes (same blob = same announce bounced
+ // through backbone). Removing the boundary-specific blocking
+ // allows:
+ // 1. Local TCP clients to receive backbone announces for
+ // destinations that also have LoRa paths.
+ // 2. The V3 destination table to contain the backbone path
+ // when it is equal-or-better, enabling correct transport
+ // routing for TCP client LINKREQUESTs.
+ // LoRa-originated announces that arrive first will still be
+ // preferred (equal hops = first-arrival wins via random_blob),
+ // until the next re-announce cycle changes the path.
+
+ if (should_add) {
+ double now = OS::time();
+
+ bool rate_blocked = false;
+
+// TODO
+ uint8_t retries = 0;
+ uint8_t announce_hops = packet.hops();
+ uint8_t local_rebroadcasts = 0;
+ bool block_rebroadcasts = false;
+ Interface attached_interface = {Type::NONE};
+
+ double retransmit_timeout = now + (Cryptography::random() * PATHFINDER_RW);
+
+ double expires = now + PATHFINDER_E;
+
+ // ── Multi-Path Insertion ────────────────────────────
+ // 1. Build PathEntry from announce fields
+ // 2. Dedup within dest by packet_hash
+ // 3. Push front (newest-first), truncate to MAX_PATHS_PER_DEST
+
+ TRACE("Caching packet " + packet.get_hash().toHex());
+ if (RNS::Transport::cache_packet(packet, true)) {
+ packet.cached(true);
+ }
+ TRACE("Adding destination " + packet.destination_hash().toHex() + " to path table");
+
+ PathEntry new_entry(
+ now,
+ received_from,
+ announce_hops,
+ expires,
+ packet.receiving_interface().get_hash(),
+ packet.get_hash()
+ );
+
+ auto& deque = _destination_table[packet.destination_hash()];
+ bool is_new_dest = deque.empty();
+
+ // Remove any existing entry with the same packet_hash (same announce)
+ deque.erase(std::remove_if(deque.begin(), deque.end(),
+ [&new_entry](const PathEntry& e) {
+ return e.packet_hash == new_entry.packet_hash;
+ }), deque.end());
+
+ // Prepend newest entry
+ deque.push_front(new_entry);
+
+ // Cap at MAX_PATHS_PER_DEST
+ while (deque.size() > MAX_PATHS_PER_DEST) {
+ deque.pop_back();
+ }
+
+ if (is_new_dest) {
+ ++_destinations_added;
+ cull_path_table();
+ }
+
+ // ── Announce table insertion / retransmission ──────
+ // In firewall mode, every announce (LAN or whitelisted WAN)
+ // gets rebroadcast to all interfaces. No DISCOVERY_ADD
+ // dependency — announces propagate naturally.
+#ifdef FIREWALL_MODE
+ if (packet.context() != Type::Packet::PATH_RESPONSE) {
+#else
+ if (Reticulum::transport_enabled() && packet.context() != Type::Packet::PATH_RESPONSE) {
+#endif
+ if (rate_blocked) {
+ DEBUG("Blocking rebroadcast of announce from " + packet.destination_hash().toHex() + " due to excessive announce rate");
+ }
+ else {
+ // attached_interface stays NONE in firewall mode:
+ // the announce will be broadcast to ALL interfaces,
+ // not just the one it arrived on.
+ AnnounceEntry announce_entry(
+ now,
+ retransmit_timeout,
+ retries,
+ received_from,
+ announce_hops,
+ packet,
+ local_rebroadcasts,
+ block_rebroadcasts,
+ attached_interface
+ );
+ _announce_table.erase(packet.destination_hash());
+ _announce_table.insert({packet.destination_hash(), announce_entry});
+ }
+ }
+
+ DEBUG("Destination " + packet.destination_hash().toHex() + " is now " + std::to_string(announce_hops) + " hops away via " + received_from.toHex() + " on " + packet.receiving_interface().toString());
+ DEBUG("DIAG: STORED path " + packet.destination_hash().toHex().substr(0,8) + " hops=" + std::to_string(announce_hops) + " iface=" + packet.receiving_interface().toString());
+
+ // FIREWALL MODE: Register destinations seen via non-backbone interfaces (Whitelist 1)
+#ifdef FIREWALL_MODE
+ {
+ bool is_backbone = is_backbone_interface(packet.receiving_interface());
+ if (!is_backbone) {
+ wl1_push(packet.destination_hash());
+ NOTICE("WL#1 ADD - " + packet.destination_hash().toHex().substr(0,8) + " (from LAN)");
+ }
+ }
+#endif
+ //TRACE("Transport::inbound: Destination " + packet.destination_hash().toHex() + " has data: " + packet.data().toHex());
+ //TRACE("Transport::inbound: Destination " + packet.destination_hash().toHex() + " has text: " + packet.data().toString());
+
+// TODO
+/*
+ // If the receiving interface is a tunnel, we add the
+ // announce to the tunnels table
+ if (packet.receiving_interface().tunnel_id()) {
+ tunnel_entry = Transport.tunnels[packet.receiving_interface.tunnel_id];
+ paths = tunnel_entry[2];
+ paths[packet.destination_hash] = destination_table_entry;
+ expires = OS::time() + Transport::DESTINATION_TIMEOUT;
+ tunnel_entry[3] = expires;
+ DEBUG("Path to " + packet.destination_hash().toHex() + " associated with tunnel " + packet.receiving_interface().tunnel_id().toHex());
+ }
+*/
+
+ // Call externally registered callbacks from apps
+ // wanting to know when an announce arrives
+ if (packet.context() != Type::Packet::PATH_RESPONSE) {
+ TRACE("Transport::inbound: Not path response, sending to announce handler...");
+ for (auto& handler : _announce_handlers) {
+ TRACE("Transport::inbound: Checking filter of announce handler...");
+ try {
+ // Check that the announced destination matches
+ // the handlers aspect filter
+ bool execute_callback = false;
+ Identity announce_identity(Identity::recall(packet.destination_hash()));
+ if (handler->aspect_filter().empty()) {
+ // If the handlers aspect filter is set to
+ // None, we execute the callback in all cases
+ execute_callback = true;
+ }
+ else {
+ Bytes handler_expected_hash = Destination::hash_from_name_and_identity(handler->aspect_filter().c_str(), announce_identity);
+ if (packet.destination_hash() == handler_expected_hash) {
+ execute_callback = true;
+ }
+ }
+ if (execute_callback) {
+ // CBA TODO Why does app data come from recall instead of from this announce packet?
+ handler->received_announce(
+ packet.destination_hash(),
+ announce_identity,
+ Identity::recall_app_data(packet.destination_hash())
+ );
+ }
+ }
+ catch (std::exception& e) {
+ ERROR("Error while processing external announce callback.");
+ ERRORF("The contained exception was: %s", e.what());
+ }
+ }
+ }
+ }
+ }
+ else {
+ TRACE("Transport::inbound: Packet is announce for local destination, not processing");
+ }
+ }
+ else {
+ TRACE("Transport::inbound: Packet is announce for local destination, not processing");
+ }
+ }
+
+ // Handling for link requests to local destinations
+ else if (packet.packet_type() == Type::Packet::LINKREQUEST) {
+ WLOG(packet, "TO: " + short_hash(packet.destination_hash()) + " (" + dest_zone(packet.destination_hash()) + ") - LINKREQ-IN");
+ if (!packet.transport_id() || packet.transport_id() == _identity.hash()) {
+ TRACE("Transport::inbound: Checking if LINKREQUEST is for local destination");
+ bool found_local = false;
+#if defined(DESTINATIONS_SET)
+ for (auto& destination : _destinations) {
+ if (destination.hash() == packet.destination_hash() && destination.type() == packet.destination_type()) {
+#elif defined(DESTINATIONS_MAP)
+ auto iter = _destinations.find(packet.destination_hash());
+ if (iter != _destinations.end()) {
+ auto& destination = (*iter).second;
+ if (destination.type() == packet.destination_type()) {
+#endif
+ TRACE("Transport::inbound: Found local destination for LINKREQUEST");
+ packet.destination(destination);
+ found_local = true;
+#if defined(DESTINATIONS_SET)
+ const_cast<Destination&>(destination).receive(packet);
+#else
+ destination.receive(packet);
+#endif
+ }
+ }
+#ifdef FIREWALL_MODE
+ // Forward non-local link requests from non-backbone to backbone
+ if (!found_local && !is_backbone_interface(packet.receiving_interface())) {
+ // Match Python: use the path table to find the correct
+ // outbound interface, not broadcast to all backbones.
+ Interface outbound_iface({Type::NONE});
+ if (has_path(packet.destination_hash())) {
+ const PathEntry* entry = select_path(packet.destination_hash());
+ if (entry) {
+ outbound_iface = find_interface_from_hash(entry->receiving_interface);
+ }
+ }
+ // Fallback: use first connected backbone interface
+ if (!outbound_iface) {
+ for (auto& [hash, iface] : _interfaces) {
+ if (is_backbone_interface(iface)) {
+ outbound_iface = iface;
+ break;
+ }
+ }
+ }
+ WLOG(packet, "TO: " + short_hash(packet.destination_hash()) + " (" + dest_zone(packet.destination_hash()) + ") - FWD: " + outbound_iface.toString() + " (" + zone_tag(is_backbone_interface(outbound_iface)) + ") LINKREQ");
+ if (outbound_iface && outbound_iface != packet.receiving_interface()) {
+ double now = OS::time();
+ uint8_t actual_hops = 1;
+ if (has_path(packet.destination_hash())) {
+ actual_hops = hops_to(packet.destination_hash());
+ if (actual_hops < 1) actual_hops = 1;
+ }
+ LinkEntry link_entry(now, packet.destination_hash(), outbound_iface, actual_hops,
+ packet.receiving_interface(), packet.hops(),
+ packet.destination_hash(), false,
+ now + (Type::Link::ESTABLISHMENT_TIMEOUT_PER_HOP * actual_hops));
+ Bytes link_id = Link::link_id_from_lr_packet(packet);
+ _link_table.erase(link_id);
+ _link_table.insert({link_id, link_entry});
+ wl2_push(link_id);
+ transmit(outbound_iface, packet.raw());
+ }
+ }
+#endif
+ }
+ }
+
+ // Handling for data packets to local destinations
+ else if (packet.packet_type() == Type::Packet::DATA) {
+ TRACE("Transport::inbound: Packet is DATA");
+ if (packet.destination_type() == Type::Destination::LINK) {
+ // Data is destined for a link
+ TRACE("Transport::inbound: Packet is DATA for a LINK");
+ std::set<Link> active_links(_active_links);
+ for (auto& link : active_links) {
+ if (link.link_id() == packet.destination_hash()) {
+ TRACE("Transport::inbound: Packet is DATA for an active LINK");
+ packet.link(link);
+ const_cast<Link&>(link).receive(packet);
+ }
+ }
+ }
+ else {
+ // Data is basic (not destined for a link)
+#if defined(DESTINATIONS_SET)
+ for (auto& destination : _destinations) {
+ if (destination.hash() == packet.destination_hash() && destination.type() == packet.destination_type()) {
+#elif defined(DESTINATIONS_MAP)
+ auto iter = _destinations.find(packet.destination_hash());
+ if (iter != _destinations.end()) {
+ // Data is for a local destination
+ WLOG(packet, "TO: " + short_hash(packet.destination_hash()) + " (" + dest_zone(packet.destination_hash()) + ") - LAN-DELIVER");
+ auto& destination = (*iter).second;
+ if (destination.type() == packet.destination_type()) {
+ TRACE("Transport::inbound: Packet destination type " + std::to_string(packet.destination_type()) + " matched, processing");
+#endif
+ packet.destination(destination);
+#if defined(DESTINATIONS_SET)
+ const_cast<Destination&>(destination).receive(packet);
+#else
+ destination.receive(packet);
+#endif
+
+ if (destination.proof_strategy() == Type::Destination::PROVE_ALL) {
+ packet.prove();
+ }
+ else if (destination.proof_strategy() == Type::Destination::PROVE_APP) {
+ if (destination.callbacks()._proof_requested) {
+ try {
+ if (destination.callbacks()._proof_requested(packet)) {
+ packet.prove();
+ }
+ }
+ catch (std::exception& e) {
+ ERROR(std::string("Error while executing proof request callback. The contained exception was: ") + e.what());
+ }
+ }
+ }
+ }
+ else {
+ DEBUG("Transport::inbound: Packet destination type " + std::to_string(packet.destination_type()) + " mismatch, ignoring");
+ }
+ }
+ else {
+ DEBUG("Transport::inbound: Local destination " + packet.destination_hash().toHex() + " not found, not handling packet locally");
+ }
+ }
+ }
+
+ // Handling for proofs and link-request proofs
+ else if (packet.packet_type() == Type::Packet::PROOF) {
+ TRACE("Transport::inbound: Packet is PROOF");
+ if (packet.context() == Type::Packet::LRPROOF) {
+ TRACE("Transport::inbound: Packet is LINK PROOF");
+ // This is a link request proof, check if it
+ // needs to be transported
+ if ((true) && _link_table.find(packet.destination_hash()) != _link_table.end()) {
+ DEBUG("LRPROOF-XPORT: handling proof for link " + packet.destination_hash().toHex().substr(0,8));
+ LinkEntry& link_entry = (*_link_table.find(packet.destination_hash())).second;
+ WLOG(packet, "TO: " + short_hash(packet.destination_hash()) + " (" + dest_zone(packet.destination_hash()) + ") - FWD: " + link_entry._receiving_interface.toString() + " (" + zone_tag(is_backbone_interface(link_entry._receiving_interface)) + ") LRPROOF");
+ DEBUG("LRPROOF-XPORT: recv_iface=" + packet.receiving_interface().toString() + " entry_out=" + link_entry._outbound_interface.toString() + " entry_recv=" + link_entry._receiving_interface.toString());
+
+ bool interface_match = (packet.receiving_interface() == link_entry._outbound_interface);
+ if (interface_match) {
+ try {
+ size_t expected_size = (Type::Identity::SIGLENGTH/8 + Type::Link::ECPUBSIZE/2);
+ size_t expected_size_with_mtu = expected_size + Type::Link::LINK_MTU_SIZE;
+ if (packet.data().size() == expected_size || packet.data().size() == expected_size_with_mtu) {
+ Bytes signalling_bytes;
+ if (packet.data().size() == expected_size_with_mtu) {
+ signalling_bytes = Link::signalling_bytes(Link::mtu_from_lp_packet(packet), Link::mode_from_lp_packet(packet));
+ }
+
+ Bytes peer_pub_bytes = packet.data().mid(Type::Identity::SIGLENGTH/8, Type::Link::ECPUBSIZE/2);
+ Identity peer_identity = Identity::recall(link_entry._destination_hash);
+ if (!peer_identity) {
+ WLOG(packet, "TO: " + short_hash(link_entry._destination_hash) + " (" + dest_zone(link_entry._destination_hash) + ") - LRPROOF-FAIL: no identity in cache");
+ }
+ else {
+ DEBUG("LRPROOF-XPORT: peer identity recalled for " + link_entry._destination_hash.toHex().substr(0,8));
+ Bytes peer_sig_pub_bytes = peer_identity.get_public_key().mid(Type::Link::ECPUBSIZE/2, Type::Link::ECPUBSIZE/2);
+
+ Bytes signed_data = packet.destination_hash() + peer_pub_bytes + peer_sig_pub_bytes + signalling_bytes;
+ Bytes signature = packet.data().left(Type::Identity::SIGLENGTH/8);
+
+ if (peer_identity.validate(signature, signed_data)) {
+ DEBUG("LRPROOF-XPORT: VALIDATED, forwarding to " + link_entry._receiving_interface.toString());
+ // CBA RESERVE
+ //Bytes new_raw = packet.raw().left(1);
+ Bytes new_raw(512);
+ new_raw << packet.raw().left(1);
+ new_raw << packet.hops();
+ new_raw << packet.raw().mid(2);
+ DEBUG("LRPROOF-XPORT: new_raw size=" + std::to_string(new_raw.size()) + " hops=" + std::to_string(packet.hops()) + " flags=0x" + new_raw.left(1).toHex() + " dest=" + new_raw.mid(2, 10).toHex().substr(0,16));
+ link_entry._validated = true;
+ transmit(link_entry._receiving_interface, new_raw);
+ DEBUG("LRPROOF-XPORT: transmit() returned OK");
+ }
+ else {
+ WLOG(packet, "TO: " + short_hash(packet.destination_hash()) + " (" + dest_zone(packet.destination_hash()) + ") - LRPROOF-FAIL: invalid signature");
+ }
+ } // end peer_identity valid
+ }
+ else {
+ WLOG(packet, "TO: " + short_hash(packet.destination_hash()) + " (" + dest_zone(packet.destination_hash()) + ") - LRPROOF-FAIL: bad size " + std::to_string(packet.data().size()) + " expected " + std::to_string(expected_size));
+ }
+ }
+ catch (std::exception& e) {
+ WLOG(packet, "TO: " + short_hash(packet.destination_hash()) + " (" + dest_zone(packet.destination_hash()) + ") - LRPROOF-FAIL: " + std::string(e.what()));
+ }
+ }
+ else {
+ WLOG(packet, "TO: " + short_hash(packet.destination_hash()) + " (" + dest_zone(packet.destination_hash()) + ") - LRPROOF-FAIL: iface mismatch");
+ }
+ }
+ else {
+ // Not in link_table or transport not enabled — check
+ // if we can deliver it to a local pending link
+ NOTICE("[PROOF] - TO: " + short_hash(packet.destination_hash()) + " (" + dest_zone(packet.destination_hash()) + ") - LRPROOF-DROP not in link_table (lt=" + std::to_string(_link_table.size()) + " pl=" + std::to_string(_pending_links.size()) + ")");
+ // CBA Must make a copy of _pending_links before traversing since it gets modified
+ //for (auto link : _pending_links) {
+ std::set<Link> pending_links(_pending_links);
+ for (auto& link : pending_links) {
+ TRACEF("Checking for link request handling by pending link %s", link.link_id().toHex().c_str());
+ if (link.link_id() == packet.destination_hash()) {
+ TRACE("Requesting pending link to validate proof");
+ const_cast<Link&>(link).validate_proof(packet);
+ }
+ }
+ }
+ }
+ else if (packet.context() == Type::Packet::RESOURCE_PRF) {
+ TRACE("Transport::inbound: Packet is RESOURCE PROOF");
+ std::set<Link> active_links(_active_links);
+ for (auto& link : active_links) {
+ if (link.link_id() == packet.destination_hash()) {
+ const_cast<Link&>(link).receive(packet);
+ }
+ }
+ }
+ else {
+ TRACE("Transport::inbound: Packet is regular PROOF");
+ if (packet.destination_type() == Type::Destination::LINK) {
+ std::set<Link> active_links(_active_links);
+ for (auto& link : active_links) {
+ if (link.link_id() == packet.destination_hash()) {
+ packet.link(link);
+ }
+ }
+ }
+
+ Bytes proof_hash;
+ if (packet.data().size() == Type::PacketReceipt::EXPL_LENGTH) {
+ proof_hash = packet.data().left(Type::Identity::HASHLENGTH/8);
+ }
+
+ // Check if this proof needs to be transported
+ if ((true) && flatmap_find(_reverse_table, packet.destination_hash()) != _reverse_table.end()) {
+ ReverseEntry reverse_entry = (*flatmap_find(_reverse_table, packet.destination_hash())).second;
+ NOTICE("[PROOF] - FROM: " + packet.receiving_interface().toString() + " (" + zone_tag(is_backbone_interface(packet.receiving_interface())) + ") - TO: " + short_hash(packet.destination_hash()) + " (" + dest_zone(packet.destination_hash()) + ") - FWD: " + reverse_entry._receiving_interface.toString() + " (" + zone_tag(is_backbone_interface(reverse_entry._receiving_interface)) + ") REV");
+ if (packet.receiving_interface() == reverse_entry._outbound_interface) {
+ TRACE("Proof received on correct interface, transporting it via " + reverse_entry._receiving_interface.toString());
+ // CBA RESERVE
+ //Bytes new_raw = packet.raw().left(1);
+ Bytes new_raw(512);
+ new_raw << packet.raw().left(1);
+ new_raw << packet.hops();
+ new_raw << packet.raw().mid(2);
+ transmit(reverse_entry._receiving_interface, new_raw);
+ }
+ else {
+ DEBUG("Proof received on wrong interface, not transporting it.");
+ }
+ }
+ else {
+ NOTICE("[PROOF] - TO: " + short_hash(packet.destination_hash()) + " (" + dest_zone(packet.destination_hash()) + ") - NO-REV cannot forward");
+ }
+
+ std::list<PacketReceipt> cull_receipts;
+ for (auto& receipt : _receipts) {
+ bool receipt_validated = false;
+ if (proof_hash) {
+ // Only test validation if hash matches
+ if (receipt.hash() == proof_hash) {
+ receipt_validated = receipt.validate_proof_packet(packet);
+ }
+ }
+ else {
+ // TODO: This looks like it should actually
+ // be rewritten when implicit proofs are added.
+
+ // In case of an implicit proof, we have
+ // to check every single outstanding receipt
+ receipt_validated = receipt.validate_proof_packet(packet);
+ }
+
+ // CBA TODO requires modifying of collection while iterating which is forbidden
+ if (receipt_validated) {
+ cull_receipts.push_back(receipt);
+ }
+ }
+ // CBA since modifying of collection while iterating is forbidden
+ for (auto& receipt : _receipts) {
+ cull_receipts.remove(receipt);
+ }
+ }
+ }
+ }
+
+ // Heap telemetry: snapshot at exit (MUTED)
+ // {
+ // size_t _heap_at_exit = OS::heap_available();
+ // int _inbound_delta = (int)_heap_at_exit - (int)_heap_at_entry;
+ // static uint32_t _tel_pkt_count = 0;
+ // ++_tel_pkt_count;
+ // if (_inbound_delta < -64 || (_tel_pkt_count % 100 == 0)) {
+ // VERBOSEF("[HEAP-TEL] inbound: %d bytes (heap=%u pin=%u bma=%u phl=%u lt=%u revr=%u)",
+ // _inbound_delta, (uint32_t)_heap_at_exit, _packets_received,
+ // _firewall_mentioned_addresses.size(), _packet_hashlist.size(),
+ // _link_table.size(), _reverse_table.size());
+ // }
+ // }
+
+ _jobs_locked = false;
+}
+
+/*static*/ void Transport::synthesize_tunnel(const Interface& interface) {
+// TODO
+
+}
+
+/*static*/ void Transport::tunnel_synthesize_handler(const Bytes& data, const Packet& packet) {
+// TODO
+
+}
+
+/*static*/ void Transport::handle_tunnel(const Bytes& tunnel_id, const Interface& interface) {
+// TODO
+
+}
+
+/*static*/ void Transport::register_interface(Interface& interface) {
+ TRACE("Transport: Registering interface " + interface.get_hash().toHex() + " " + interface.toString());
+#if defined(INTERFACES_SET)
+ _interfaces.insert(interface);
+#elif defined(INTERFACES_LIST)
+ _interfaces.push_back(interface);
+#elif defined(INTERFACES_MAP)
+ _interfaces.insert({interface.get_hash(), interface});
+#endif
+ // CBA TODO set or add transport as listener on interface to receive incoming packets?
+}
+
+/*static*/ void Transport::deregister_interface(const Interface& interface) {
+ TRACE("Transport: Deregistering interface " + interface.toString());
+#if defined(INTERFACES_SET)
+ //for (auto iter = _interfaces.begin(); iter != _interfaces.end(); ++iter) {
+ // if ((*iter).get() == interface) {
+ // _interfaces.erase(iter);
+ // TRACE("Transport::deregister_interface: Found and removed interface " + (*iter).get().toString());
+ // break;
+ // }
+ //}
+ //auto iter = _interfaces.find(interface);
+ auto iter = _interfaces.find(const_cast<Interface&>(interface));
+ if (iter != _interfaces.end()) {
+ _interfaces.erase(iter);
+ TRACE("Transport::deregister_interface: Found and removed interface " + (*iter).get().toString());
+ }
+#elif defined(INTERFACES_LIST)
+ for (auto iter = _interfaces.begin(); iter != _interfaces.end(); ++iter) {
+ if ((*iter).get() == interface) {
+ _interfaces.erase(iter);
+ TRACE("Transport::deregister_interface: Found and removed interface " + (*iter).get().toString());
+ break;
+ }
+ }
+#elif defined(INTERFACES_MAP)
+ auto iter = _interfaces.find(interface.get_hash());
+ if (iter != _interfaces.end()) {
+ TRACE("Transport::deregister_interface: Found and removed interface " + (*iter).second.toString());
+ _interfaces.erase(iter);
+ }
+#endif
+}
+
+/*static*/ void Transport::register_destination(Destination& destination) {
+ //TRACE("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
+ TRACE("Transport: Registering destination " + destination.toString());
+ destination.mtu(Type::Reticulum::MTU);
+ if (destination.direction() == Type::Destination::IN) {
+#if defined(DESTINATIONS_SET)
+ for (auto& registered_destination : _destinations) {
+ if (destination.hash() == registered_destination.hash()) {
+ throw std::runtime_error("Attempt to register an already registered destination.");
+ }
+ }
+
+ // CBA ACCUMULATES
+ _destinations.insert(destination);
+#elif defined(DESTINATIONS_MAP)
+ auto iter = _destinations.find(destination.hash());
+ if (iter != _destinations.end()) {
+ throw std::runtime_error("Attempt to register an already registered destination.");
+ }
+
+ // CBA ACCUMULATES
+ _destinations.insert({destination.hash(), destination});
+#endif
+
+ if (_owner && _owner.is_connected_to_shared_instance()) {
+ if (destination.type() == Type::Destination::SINGLE) {
+ TRACE("Transport:register_destination: Announcing destination " + destination.toString());
+ destination.announce({}, true);
+ }
+ }
+ }
+ else {
+ TRACE("Transport:register_destination: Skipping registration (not direction IN) of destination " + destination.toString());
+ }
+
+/*
+#if defined(DESTINATIONS_SET)
+ for (const Destination& destination : _destinations) {
+#elif defined(DESTINATIONS_MAP)
+ for (auto& [hash, destination] : _destinations) {
+#endif
+ TRACE("Transport::register_destination: Listed destination " + destination.toString());
+ }
+*/
+ //TRACE("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
+}
+
+/*static*/ void Transport::deregister_destination(const Destination& destination) {
+ TRACE("Transport: Deregistering destination " + destination.toString());
+#if defined(DESTINATIONS_SET)
+ if (_destinations.find(destination) != _destinations.end()) {
+ _destinations.erase(destination);
+ TRACE("Transport::deregister_destination: Found and removed destination " + destination.toString());
+ }
+#elif defined(DESTINATIONS_MAP)
+ auto iter = _destinations.find(destination.hash());
+ if (iter != _destinations.end()) {
+ _destinations.erase(iter);
+ TRACE("Transport::deregister_destination: Found and removed destination " + (*iter).second.toString());
+ }
+#endif
+}
+
+/*static*/ void Transport::register_link(Link& link) {
+ TRACE("Transport: Registering link " + link.toString());
+ if (link.initiator()) {
+ // CBA ACCUMULATES
+ _pending_links.insert(link);
+ }
+ else {
+ // CBA ACCUMULATES
+ _active_links.insert(link);
+ }
+}
+
+/*static*/ void Transport::activate_link(Link& link) {
+ TRACE("Transport: Activating link " + link.toString());
+ if (_pending_links.find(link) != _pending_links.end()) {
+ if (link.status() != Type::Link::ACTIVE) {
+ throw std::runtime_error("Invalid link state for link activation: " + std::to_string(link.status()));
+ }
+ _pending_links.erase(link);
+ // CBA ACCUMULATES
+ _active_links.insert(link);
+ link.status(Type::Link::ACTIVE);
+ }
+ else {
+ ERROR("Attempted to activate a link that was not in the pending table");
+ }
+}
+
+/*
+Registers an announce handler.
+
+:param handler: Must be an object with an *aspect_filter* attribute and a *received_announce(destination_hash, announced_identity, app_data)* callable. See the :ref:`Announce Example<example-announce>` for more info.
+*/
+/*static*/ void Transport::register_announce_handler(HAnnounceHandler handler) {
+ TRACE("Transport: Registering announce handler " + handler->aspect_filter());
+ _announce_handlers.insert(handler);
+}
+
+/*
+Deregisters an announce handler.
+
+:param handler: The announce handler to be deregistered.
+*/
+/*static*/ void Transport::deregister_announce_handler(HAnnounceHandler handler) {
+ TRACE("Transport: Deregistering announce handler " + handler->aspect_filter());
+ if (_announce_handlers.find(handler) != _announce_handlers.end()) {
+ _announce_handlers.erase(handler);
+ TRACE("Transport::deregister_announce_handler: Found and removed handler" + handler->aspect_filter());
+ }
+}
+
+/*static*/ Interface Transport::find_interface_from_hash(const Bytes& interface_hash) {
+#if defined(INTERFACES_SET)
+ for (const Interface& interface : _interfaces) {
+ if (interface.get_hash() == interface_hash) {
+ TRACE("Transport::find_interface_from_hash: Found interface " + interface.toString());
+ return interface;
+ }
+ }
+#elif defined(INTERFACES_LIST)
+ for (Interface& interface : _interfaces) {
+ if (interface.get_hash() == interface_hash) {
+ TRACE("Transport::find_interface_from_hash: Found interface " + interface.toString());
+ return interface;
+ }
+ }
+#elif defined(INTERFACES_MAP)
+ auto iter = _interfaces.find(interface_hash);
+ if (iter != _interfaces.end()) {
+ TRACE("Transport::find_interface_from_hash: Found interface " + (*iter).second.toString());
+ return (*iter).second;
+ }
+#endif
+
+ return {Type::NONE};
+}
+
+/*static*/ bool Transport::should_cache_packet(const Packet& packet) {
+ // TODO: Rework the caching system. It's currently
+ // not very useful to even cache Resource proofs,
+ // disabling it for now, until redesigned.
+ // if packet.context == RNS.Packet.RESOURCE_PRF:
+ // return True
+
+ return false;
+}
+
+// When caching packets to storage, they are written
+// exactly as they arrived over their interface. This
+// means that they have not had their hop count
+// increased yet! Take note of this when reading from
+// the packet cache.
+/*static*/ bool Transport::cache_packet(const Packet& packet, bool force_cache /*= false*/) {
+ TRACE("Checking to see if packet " + packet.get_hash().toHex() + " should be cached");
+#if defined(RNS_USE_FS) && defined(RNS_PERSIST_PATHS)
+ if (should_cache_packet(packet) || force_cache) {
+ TRACE("Saving packet " + packet.get_hash().toHex() + " to storage");
+ try {
+ char packet_cache_path[Type::Reticulum::FILEPATH_MAXSIZE];
+ snprintf(packet_cache_path, Type::Reticulum::FILEPATH_MAXSIZE, "%s/%s", Reticulum::_cachepath, packet.get_hash().toHex().c_str());
+ return (Persistence::serialize(packet, packet_cache_path) > 0);
+ }
+ catch (std::exception& e) {
+ ERROR("Error writing packet to cache. The contained exception was: " + std::string(e.what()));
+ }
+ }
+#endif
+ return false;
+}
+
+/*static*/ Packet Transport::get_cached_packet(const Bytes& packet_hash) {
+ TRACE("Loading packet " + packet_hash.toHex() + " from cache storage");
+#if defined(RNS_USE_FS) && defined(RNS_PERSIST_PATHS)
+ try {
+
+ char packet_cache_path[Type::Reticulum::FILEPATH_MAXSIZE];
+ snprintf(packet_cache_path, Type::Reticulum::FILEPATH_MAXSIZE, "%s/%s", Reticulum::_cachepath, packet_hash.toHex().c_str());
+ Packet packet({Type::NONE});
+ if (Persistence::deserialize(packet, packet_cache_path) > 0) {
+ packet.unpack();
+ }
+ return packet;
+ }
+ catch (std::exception& e) {
+ ERROR("Exception occurred while getting cached packet.");
+ ERRORF("The contained exception was: %s", e.what());
+ }
+#endif
+ return {Type::NONE};
+}
+
+/*static*/ bool Transport::clear_cached_packet(const Bytes& packet_hash) {
+ TRACE("Clearing packet " + packet_hash.toHex() + " from cache storage");
+#if defined(RNS_USE_FS) && defined(RNS_PERSIST_PATHS)
+ try {
+ char packet_cache_path[Type::Reticulum::FILEPATH_MAXSIZE];
+ snprintf(packet_cache_path, Type::Reticulum::FILEPATH_MAXSIZE, "%s/%s", Reticulum::_cachepath, packet_hash.toHex().c_str());
+ double start_time = OS::time();
+ bool success = RNS::Utilities::OS::remove_file(packet_cache_path);
+ double diff_time = OS::time() - start_time;
+ if (diff_time < 1.0) {
+ DEBUG("Remove cached packet in " + std::to_string((int)(diff_time*1000)) + " ms");
+ }
+ else {
+ DEBUG("Remove cached packet in " + std::to_string(diff_time) + " s");
+ }
+ }
+ catch (std::exception& e) {
+ ERROR("Exception occurred while clearing cached packet.");
+ ERRORF("The contained exception was: %s", e.what());
+ }
+#endif
+ return false;
+}
+
+/*static*/ bool Transport::cache_request_packet(const Packet& packet) {
+ if (packet.data().size() == Type::Identity::HASHLENGTH/8) {
+ const Packet& cached_packet = get_cached_packet(packet.data());
+
+ if (cached_packet) {
+ // If the packet was retrieved from the local
+ // cache, replay it to the Transport instance,
+ // so that it can be directed towards it original
+ // destination.
+ inbound(cached_packet.raw(), cached_packet.receiving_interface());
+ return true;
+ }
+ else {
+ return false;
+ }
+ }
+ else {
+ return false;
+ }
+}
+
+/*static*/ void Transport::cache_request(const Bytes& packet_hash, const Destination& destination) {
+ const Packet& cached_packet = get_cached_packet(packet_hash);
+ if (cached_packet) {
+ // The packet was found in the local cache,
+ // replay it to the Transport instance.
+ inbound(cached_packet.raw(), cached_packet.receiving_interface());
+ }
+ else {
+ // The packet is not in the local cache,
+ // query the network.
+ Packet request(destination, packet_hash, Type::Packet::DATA, Type::Packet::CACHE_REQUEST);
+ request.send();
+ }
+}
+
+/*static*/ const Transport::PathEntry* Transport::select_path(const Bytes& destination_hash) {
+ auto iter = _destination_table.find(destination_hash);
+ if (iter == _destination_table.end()) return nullptr;
+
+ const auto& deque = iter->second;
+ double now = OS::time();
+ const PathEntry* best = nullptr;
+ double best_score = -1.0;
+
+ for (const auto& entry : deque) {
+ if (entry.is_expired(now)) continue;
+ Interface iface = find_interface_from_hash(entry.receiving_interface);
+ uint32_t bitrate = iface ? iface.bitrate() : 0;
+ double s = entry.score(bitrate);
+ if (s > best_score) {
+ best_score = s;
+ best = &entry;
+ }
+ }
+ return best;
+}
+
+/*static*/ std::vector<Transport::PathEntry> Transport::select_all_paths(const Bytes& destination_hash) {
+ std::vector<PathEntry> result;
+ auto iter = _destination_table.find(destination_hash);
+ if (iter == _destination_table.end()) return result;
+
+ double now = OS::time();
+ for (const auto& entry : iter->second) {
+ if (entry.is_expired(now)) continue;
+ result.push_back(entry);
+ }
+ // Sort by score descending (best first)
+ std::sort(result.begin(), result.end(),
+ [&](const PathEntry& a, const PathEntry& b) {
+ Interface iface_a = find_interface_from_hash(a.receiving_interface);
+ Interface iface_b = find_interface_from_hash(b.receiving_interface);
+ uint32_t br_a = iface_a ? iface_a.bitrate() : 0;
+ uint32_t br_b = iface_b ? iface_b.bitrate() : 0;
+ return a.score(br_a) > b.score(br_b);
+ });
+ return result;
+}
+
+/*static*/ bool Transport::remove_path(const Bytes& destination_hash) {
+ if (_destination_table.erase(destination_hash) > 0) {
+ // CBA also remove cached announce packet if exists
+ }
+ return false;
+}
+
+/*
+:param destination_hash: A destination hash as *bytes*.
+:returns: *True* if a path to the destination is known, otherwise *False*.
+*/
+/*static*/ bool Transport::has_path(const Bytes& destination_hash) {
+ return select_path(destination_hash) != nullptr;
+}
+
+/*
+:param destination_hash: A destination hash as *bytes*.
+:returns: The number of hops to the specified destination, or ``RNS.Transport.PATHFINDER_M`` if the number of hops is unknown.
+*/
+/*static*/ uint8_t Transport::hops_to(const Bytes& destination_hash) {
+ const PathEntry* entry = select_path(destination_hash);
+ if (entry) {
+ return entry->hops;
+ }
+ else {
+ return PATHFINDER_M;
+ }
+}
+
+/*
+:param destination_hash: A destination hash as *bytes*.
+:returns: The destination hash as *bytes* for the next hop to the specified destination, or *None* if the next hop is unknown.
+*/
+/*static*/ Bytes Transport::next_hop(const Bytes& destination_hash) {
+ const PathEntry* entry = select_path(destination_hash);
+ if (entry) {
+ return entry->next_hop;
+ }
+ else {
+ return {};
+ }
+}
+
+/*
+:param destination_hash: A destination hash as *bytes*.
+:returns: The interface for the next hop to the specified destination, or *None* if the interface is unknown.
+*/
+/*static*/ Interface Transport::next_hop_interface(const Bytes& destination_hash) {
+ const PathEntry* entry = select_path(destination_hash);
+ if (entry) {
+ return find_interface_from_hash(entry->receiving_interface);
+ }
+ else {
+ return {Type::NONE};
+ }
+}
+
+/*static*/ uint32_t Transport::next_hop_interface_bitrate(const Bytes& destination_hash) {
+ const Interface& interface = next_hop_interface(destination_hash);
+ if (interface) {
+ return interface.bitrate();
+ }
+ else {
+ return 0;
+ }
+}
+
+/*static*/ uint16_t Transport::next_hop_interface_hw_mtu(const Bytes& destination_hash) {
+ const Interface& interface = next_hop_interface(destination_hash);
+ if (interface) {
+ if (interface.AUTOCONFIGURE_MTU() || interface.FIXED_MTU()) return interface.HW_MTU();
+ else return 0;
+ }
+ else {
+ return 0;
+ }
+}
+
+/*static*/ double Transport::next_hop_per_bit_latency(const Bytes& destination_hash) {
+ uint32_t bitrate = next_hop_interface_bitrate(destination_hash);
+ if (bitrate > 0) {
+ return (1.0/(double)bitrate);
+ }
+ else {
+ return 0.0;
+ }
+}
+
+/*static*/ double Transport::next_hop_per_byte_latency(const Bytes& destination_hash) {
+ double per_bit_latency = next_hop_per_bit_latency(destination_hash);
+ if (per_bit_latency > 0.0) {
+ return per_bit_latency*8.0;
+ }
+ else {
+ return 0.0;
+ }
+}
+
+/*static*/ double Transport::first_hop_timeout(const Bytes& destination_hash) {
+ double latency = next_hop_per_byte_latency(destination_hash);
+ if (latency > 0.0) {
+ return RNS::Type::Reticulum::MTU * latency + RNS::Type::Reticulum::DEFAULT_PER_HOP_TIMEOUT;
+ }
+ else {
+ return RNS::Type::Reticulum::DEFAULT_PER_HOP_TIMEOUT;
+ }
+}
+
+/*static*/ double Transport::extra_link_proof_timeout(const Interface& interface) {
+ if (interface) {
+ return ((1.0/(double)interface.bitrate())*8.0)*RNS::Type::Reticulum::MTU;
+ }
+ else {
+ return 0.0;
+ }
+}
+
+/*static*/ bool Transport::expire_path(const Bytes& destination_hash) {
+ // Remove ALL entries for this destination (hard delete, not soft-expire)
+ return _destination_table.erase(destination_hash) > 0;
+}
+
+/*static*/ bool Transport::mark_path_unresponsive(const Bytes& destination_hash, const Bytes& blocked_interface /*= {}*/) {
+ auto iter = _destination_table.find(destination_hash);
+ if (iter == _destination_table.end()) return false;
+
+ auto& deque = iter->second;
+ if (!blocked_interface) {
+ // No interface specified: remove all paths (backward compat)
+ _destination_table.erase(iter);
+ return true;
+ }
+
+ // Remove only entries matching the blocked interface
+ size_t before = deque.size();
+ deque.erase(std::remove_if(deque.begin(), deque.end(),
+ [&blocked_interface](const PathEntry& e) {
+ return e.receiving_interface == blocked_interface;
+ }), deque.end());
+
+ // If deque is now empty, remove the whole destination entry
+ if (deque.empty()) {
+ _destination_table.erase(iter);
+ }
+ return deque.size() < before;
+}
+/*
+Requests a path to the destination from the network. If
+another reachable peer on the network knows a path, it
+will announce it.
+
+:param destination_hash: A destination hash as *bytes*.
+:param on_interface: If specified, the path request will only be sent on this interface. In normal use, Reticulum handles this automatically, and this parameter should not be used.
+*/
+///*static*/ void Transport::request_path(const Bytes& destination_hash, const Interface& on_interface /*= {Type::NONE}*/, const Bytes& tag /*= {}*/, bool recursive /*= false*/) {
+/*static*/ void Transport::request_path(const Bytes& destination_hash, const Interface& on_interface, const Bytes& tag /*= {}*/, bool recursive /*= false*/) {
+ Bytes request_tag;
+ if (!tag) {
+ request_tag = Identity::get_random_hash();
+ }
+ else {
+ request_tag = tag;
+ }
+
+ Bytes path_request_data;
+ if (true) {
+ path_request_data = destination_hash + _identity.hash() + request_tag;
+ }
+ else {
+ path_request_data = destination_hash + request_tag;
+ }
+
+ Destination path_request_dst({Type::NONE}, Type::Destination::OUT, Type::Destination::PLAIN, Type::Transport::APP_NAME, "path.request");
+ Packet packet(path_request_dst, on_interface, path_request_data, Type::Packet::DATA, Type::Packet::CONTEXT_NONE, Type::Transport::BROADCAST, Type::Packet::HEADER_1);
+
+ if (on_interface && recursive) {
+// TODO
+ bool queued_announces = (on_interface.announce_queue().size() > 0);
+ if (queued_announces) {
+ TRACE("Blocking recursive path request on " + on_interface.toString() + " due to queued announces");
+ return;
+ }
+ else {
+ double now = OS::time();
+ if (now < on_interface.announce_allowed_at()) {
+ TRACE("Blocking recursive path request on " + on_interface.toString() + " due to active announce cap");
+ return;
+ }
+ else {
+ uint32_t wait_time = 0;
+ if ( on_interface.bitrate() > 0 && on_interface.announce_cap() > 0) {
+ uint32_t tx_time = ((path_request_data.size() + Type::Reticulum::HEADER_MINSIZE)*8) / on_interface.bitrate();
+ wait_time = (tx_time / on_interface.announce_cap());
+ }
+ const_cast<Interface&>(on_interface).announce_allowed_at(now + wait_time);
+ }
+ }
+ }
+
+ packet.send();
+ flatmap_upsert(_path_requests, destination_hash, OS::time());
+}
+
+/*static*/ void Transport::request_path(const Bytes& destination_hash) {
+ return request_path(destination_hash, {Type::NONE});
+}
+
+/*static*/ void Transport::path_request_handler(const Bytes& data, const Packet& packet) {
+ TRACE("Transport::path_request_handler");
+ if (data.size() >= 16) { WLOG(packet, "PATH-REQ for " + data.left(16).toHex().substr(0,8) + " from " + packet.receiving_interface().toString()); }
+ try {
+ // If there is at least bytes enough for a destination
+ // hash in the packet, we assume those bytes are the
+ // destination being requested.
+ if (data.size() >= Type::Identity::TRUNCATED_HASHLENGTH/8) {
+ Bytes destination_hash = data.left(Type::Identity::TRUNCATED_HASHLENGTH/8);
+ //TRACE("Transport::path_request_handler: destination_hash: " + destination_hash.toHex());
+ // If there is also enough bytes for a transport
+ // instance ID and at least one tag byte, we
+ // assume the next bytes to be the trasport ID
+ // of the requesting transport instance.
+ Bytes requesting_transport_instance;
+ if (data.size() > (Type::Identity::TRUNCATED_HASHLENGTH/8)*2) {
+ requesting_transport_instance = data.mid(Type::Identity::TRUNCATED_HASHLENGTH/8, Type::Identity::TRUNCATED_HASHLENGTH/8);
+ //TRACE("Transport::path_request_handler: requesting_transport_instance: " + requesting_transport_instance.toHex());
+ }
+
+ Bytes tag_bytes;
+ if (data.size() > Type::Identity::TRUNCATED_HASHLENGTH/8*2) {
+ tag_bytes = data.mid(Type::Identity::TRUNCATED_HASHLENGTH/8*2);
+ }
+ else if (data.size() > Type::Identity::TRUNCATED_HASHLENGTH/8) {
+ tag_bytes = data.mid(Type::Identity::TRUNCATED_HASHLENGTH/8);
+ }
+
+ if (tag_bytes) {
+ //TRACE("Transport::path_request_handler: tag_bytes: " + tag_bytes.toHex());
+ if (tag_bytes.size() > Type::Identity::TRUNCATED_HASHLENGTH/8) {
+ tag_bytes = tag_bytes.left(Type::Identity::TRUNCATED_HASHLENGTH/8);
+ }
+
+ Bytes unique_tag = destination_hash + tag_bytes;
+ //TRACE("Transport::path_request_handler: unique_tag: " + unique_tag.toHex());
+
+ if (_discovery_pr_tags.find(unique_tag) == _discovery_pr_tags.end()) {
+ // CBA ACCUMULATES
+ _discovery_pr_tags.insert(unique_tag);
+
+ path_request(
+ destination_hash,
+ false,
+ packet.receiving_interface(),
+ requesting_transport_instance,
+ tag_bytes
+ );
+ }
+ else {
+ NOTICE("[PKT] PATH-REQ-DUP for " + destination_hash.toHex().substr(0,8));
+ }
+ }
+ else {
+ DEBUG("Ignoring tagless path request for " + destination_hash.toHex());
+ }
+ }
+ }
+ catch (std::exception& e) {
+ ERROR("Error while handling path request. The contained exception was: " + std::string(e.what()));
+ }
+}
+
+/*static*/ void Transport::path_request(const Bytes& destination_hash, bool is_from_local_client, const Interface& attached_interface, const Bytes& requestor_transport_id /*= {}*/, const Bytes& tag /*= {}*/) {
+ TRACE("Transport::path_request");
+ bool should_search_for_unknown = false;
+ std::string interface_str;
+
+ if (attached_interface) {
+ should_search_for_unknown = true;
+ interface_str = " on " + attached_interface.toString();
+ }
+
+ DEBUG("Path request for destination " + destination_hash.toHex() + interface_str);
+
+ bool destination_exists_on_local_client = false;
+ if (false) {
+ if (has_path(destination_hash)) {
+ TRACE("Transport::path_request_handler: entry found for destination " + destination_hash.toHex());
+ Interface iface = next_hop_interface(destination_hash);
+ if (false) {
+ destination_exists_on_local_client = true;
+ // CBA ACCUMULATES
+ _pending_local_path_requests.insert({destination_hash, attached_interface.get_hash()});
+ }
+ }
+ else {
+ TRACE("Transport::path_request_handler: entry not found for destination " + destination_hash.toHex());
+ }
+ }
+
+ auto destination_iter = _destination_table.find(destination_hash);
+ //local_destination = next((d for d in Transport.destinations if d.hash == destination_hash), None)
+#if defined(DESTINATIONS_SET)
+ Destination local_destination({Type::NONE});
+ for (auto& destination : _destinations) {
+ if (destination.hash() == destination_hash) {
+ local_destination = destination;
+ break;
+ }
+ }
+ //if local_destination != None:
+ if (local_destination) {
+#elif defined(DESTINATIONS_MAP)
+ auto iter = _destinations.find(destination_hash);
+ if (iter != _destinations.end()) {
+ auto& local_destination = (*iter).second;
+#endif
+ local_destination.announce({Bytes::NONE}, true, attached_interface, tag);
+ DEBUG("Answering path request for destination " + destination_hash.toHex() + interface_str + ", destination is local to this system");
+ }
+ else if ((true) && has_path(destination_hash)) {
+ TRACE("Transport::path_request_handler: entry found for destination " + destination_hash.toHex());
+ const PathEntry* entry = select_path(destination_hash);
+ if (!entry) {
+ TRACE("path_request: selected path expired for " + destination_hash.toHex());
+ return;
+ }
+ const Packet& announce_packet = get_cached_packet(entry->packet_hash);
+ const Bytes& next_hop = entry->next_hop;
+ if (!announce_packet) {
+ // Cache file missing or corrupt — remove the stale entry and bail
+ WARNING("path_request: removing stale path to " + destination_hash.toHex() + " due to missing announce packet cache");
+ // Remove the specific entry with the missing cache
+ auto iter = _destination_table.find(destination_hash);
+ if (iter != _destination_table.end()) {
+ iter->second.erase(std::remove_if(iter->second.begin(), iter->second.end(),
+ [&entry](const PathEntry& e) { return e.packet_hash == entry->packet_hash; }),
+ iter->second.end());
+ if (iter->second.empty()) _destination_table.erase(iter);
+ }
+ return;
+ }
+ const Interface& receiving_interface = find_interface_from_hash(entry->receiving_interface);
+
+ if (requestor_transport_id && entry->next_hop == requestor_transport_id) {
+ // TODO: Find a bandwidth efficient way to invalidate our
+ // known path on this signal. The obvious way of signing
+ // path requests with transport instance keys is quite
+ // inefficient. There is probably a better way. Doing
+ // path invalidation here would decrease the network
+ // convergence time. Maybe just drop it?
+ DEBUG("Not answering path request for destination " + destination_hash.toHex() + interface_str + ", since next hop is the requestor");
+ }
+ else {
+ DEBUG("Answering path request for destination " + destination_hash.toHex() + interface_str + ", path is known");
+ DEBUG("DIAG: PATH-RESP for " + destination_hash.toHex().substr(0,8) + interface_str);
+
+ double now = OS::time();
+ uint8_t retries = Type::Transport::PATHFINDER_R;
+ uint8_t local_rebroadcasts = 0;
+ bool block_rebroadcasts = true;
+ // Use PathEntry.hops (correct hop count from announce, not stale wire bytes)
+ uint8_t announce_hops = entry->hops;
+
+ double retransmit_timeout = now + Type::Transport::PATH_REQUEST_GRACE;
+
+ // This handles an edge case where a peer sends a past
+ // request for a destination just after an announce for
+ // said destination has arrived, but before it has been
+ // rebroadcast locally. In such a case the actual announce
+ // is temporarily held, and then reinserted when the path
+ // request has been served to the peer.
+ auto announce_iter = _announce_table.find(announce_packet.destination_hash());
+ if (announce_iter != _announce_table.end()) {
+ AnnounceEntry& held_entry = (*announce_iter).second;
+ // CBA ACCUMULATES
+ _held_announces.insert({announce_packet.destination_hash(), held_entry});
+ // BUG FIX: Must erase old entry before insert(),
+ // since std::map::insert() is a no-op when key exists.
+ // Python dict assignment overwrites, but C++ insert does not.
+ _announce_table.erase(announce_iter);
+ }
+
+ AnnounceEntry announce_entry(
+ now,
+ retransmit_timeout,
+ retries,
+ next_hop,
+ announce_hops,
+ announce_packet,
+ local_rebroadcasts,
+ block_rebroadcasts,
+ attached_interface
+ );
+ // CBA ACCUMULATES
+ _announce_table.insert({announce_packet.destination_hash(), announce_entry});
+ }
+ }
+ else if (should_search_for_unknown) {
+ TRACE("Transport::path_request_handler: searching for unknown path to " + destination_hash.toHex());
+ if (flatmap_find(_discovery_path_requests, destination_hash) != _discovery_path_requests.end()) {
+ DEBUG("There is already a waiting path request for destination " + destination_hash.toHex() + " on behalf of path request" + interface_str);
+ }
+ else {
+ // Forward path request on all interfaces
+ // except the requestor interface
+ DEBUG("Attempting to discover unknown path to destination " + destination_hash.toHex() + " on behalf of path request" + interface_str);
+
+#if defined(FIREWALL_MODE)
+ // Track this destination in Whitelist 2 so the path
+ // response announce from the backbone will be allowed through
+ wl2_push(destination_hash);
+#endif
+
+#if defined(INTERFACES_SET)
+ for (const Interface& interface : _interfaces) {
+#elif defined(INTERFACES_LIST)
+ for (Interface& interface : _interfaces) {
+#elif defined(INTERFACES_MAP)
+ for (auto& [hash, interface] : _interfaces) {
+#endif
+ // Only forward path requests to interfaces other than
+ // the one they arrived on — prevents WAN path requests
+ // from flooding the LoRa channel.
+ if (interface != attached_interface) {
+ TRACE("Transport::path_request: requesting path on interface " + interface.toString());
+ // Use the previously extracted tag from this path request
+ // on the new path requests as well, to avoid potential loops
+ request_path(destination_hash, interface, tag, true);
+ }
+ else {
+ TRACE("Transport::path_request: not requesting path on same interface " + interface.toString());
+ }
+ }
+ }
+ }
+ else {
+ DEBUG("Ignoring path request for destination " + destination_hash.toHex() + interface_str + ", no path known");
+ }
+}
+
+/*static*/ uint64_t Transport::announce_emitted(const Packet& packet) {
+ Bytes random_blob = packet.data().mid(RNS::Type::Identity::KEYSIZE/8+RNS::Type::Identity::NAME_HASH_LENGTH/8, 10);
+ if (random_blob) {
+ return OS::from_bytes_big_endian(random_blob.data() + 5, 5);
+ }
+ return 0;
+}
+
+/*static*/ void Transport::drop_announce_queues() {
+ // No-op in firewall mode: announce queues handled by jobs() loop
+}
+
+/*static*/ void Transport::write_packet_hashlist() {
+#if defined(RNS_USE_FS) && defined(RNS_PERSIST_PATHS)
+// TODO
+
+#endif
+}
+
+//#define CUSTOM 1
+
+/*static*/ bool Transport::read_path_table() {
+ DEBUG("Transport::read_path_table");
+#if defined(RNS_USE_FS) && defined(RNS_PERSIST_PATHS)
+ char destination_table_path[Type::Reticulum::FILEPATH_MAXSIZE];
+ snprintf(destination_table_path, Type::Reticulum::FILEPATH_MAXSIZE, "%s/destination_table", Reticulum::_storagepath);
+ if (!_owner.is_connected_to_shared_instance() && OS::file_exists(destination_table_path)) {
+ try {
+#if CUSTOM
+TRACEF("Transport::start: buffer capacity %d bytes", Persistence::_buffer.capacity());
+ if (RNS::Utilities::OS::read_file(destination_table_path, Persistence::_buffer) > 0) {
+ TRACEF("Transport::start: read: %d bytes", Persistence::_buffer.size());
+#ifndef NDEBUG
+ // CBA DEBUG Dump path table
+TRACEF("Transport::start: buffer addr: 0x%X", Persistence::_buffer.data());
+TRACEF("Transport::start: buffer size %d bytes", Persistence::_buffer.size());
+ //TRACE("SERIALIZED: destination_table");
+ //TRACE(Persistence::_buffer.toString());
+#endif
+#ifdef USE_MSGPACK
+ DeserializationError error = deserializeMsgPack(Persistence::_document, Persistence::_buffer.data());
+#else
+ DeserializationError error = deserializeJson(Persistence::_document, Persistence::_buffer.data());
+#endif
+ TRACEF("Transport::start: doc size: %d bytes", Persistence::_buffer.size());
+ if (!error) {
+ // Calculate crc for dirty-checking before write
+ _destination_table_crc = Crc::crc32(0, Persistence::_buffer.data(), Persistence::_buffer.size());
+ _destination_table = Persistence::_document.as<std::map<Bytes, std::deque<PathEntry>>>();
+#else // CUSTOM
+ // Calculate crc for dirty-checking before write
+ if (Persistence::deserialize(_destination_table, destination_table_path, _destination_table_crc) > 0) {
+#endif // CUSTOM
+
+ TRACEF("Transport::start: successfully deserialized path table with %d entries", _destination_table.size());
+ std::vector<Bytes> invalid_paths;
+ double now = OS::time();
+ for (auto& [destination_hash, deque] : _destination_table) {
+ // Remove individual entries with missing packet cache or interface
+ deque.erase(std::remove_if(deque.begin(), deque.end(),
+ [](PathEntry& entry) {
+ Interface iface = find_interface_from_hash(entry.receiving_interface);
+ Packet pkt = get_cached_packet(entry.packet_hash);
+ if (!iface || !pkt) {
+ return true; // remove — interface or cache missing
+ }
+ // Drop paths through interfaces that have no connected
+ // clients at boot. TCP client connections don't survive
+ // reboots, so saved paths through LocalTcpInterface are
+ // dead until the client reconnects and re-announces.
+ if (!iface.isConnected()) {
+ return true; // remove — no clients connected
+ }
+ return false;
+ }), deque.end());
+ if (deque.empty()) {
+ invalid_paths.push_back(destination_hash);
+ }
+ // Reset timestamps to boot time minus staleness threshold.
+ // Without NTP, saved timestamps are seconds-since-boot from
+ // a previous session and are meaningless after reboot.
+ // Starting stale causes the first packet to each destination
+ // to hedge immediately, firing a path_request to revalidate.
+ double stale_time = now - (double)Type::Transport::PATH_STALE_THRESHOLD - 1.0;
+ for (auto& entry : deque) {
+ entry.timestamp = stale_time;
+ }
+ }
+ for (const auto& destination_hash : invalid_paths) {
+ _destination_table.erase(destination_hash);
+ }
+
+ // Enforce maxsize on loaded paths (trim lowest-score if over limit)
+ if (_destination_table.size() > _path_table_maxsize) {
+ DEBUGF("Transport::start: trimming loaded path table from %d to %d entries", _destination_table.size(), _path_table_maxsize);
+ cull_path_table();
+ }
+
+ // Memory diagnostic after path table load
+ size_t total_entries = 0;
+ for (const auto& [hash, deque] : _destination_table) {
+ total_entries += deque.size();
+ }
+ DEBUGF("Transport::start: path table: %d dests, %d total entries",
+ _destination_table.size(), total_entries);
+
+ return true;
+ }
+ else {
+ TRACE("Transport::start: failed to deserialize");
+ }
+#if CUSTOM
+ }
+ else {
+ TRACE("Transport::start: destination table read failed");
+ }
+#else // CUSTOM
+#endif // CUSTOM
+
+ VERBOSEF("Loaded %d valid path table entries from storage", _destination_table.size());
+
+ }
+ catch (std::exception& e) {
+ ERRORF("Could not load destination table from storage, the contained exception was: %s", e.what());
+ }
+ }
+#endif
+ return false;
+}
+
+/*static*/ bool Transport::write_path_table() {
+ DEBUG("Transport::write_path_table");
+
+ if (Transport::_owner.is_connected_to_shared_instance()) {
+ return true;
+ }
+
+ bool success = false;
+#if defined(RNS_USE_FS) && defined(RNS_PERSIST_PATHS)
+ if (_saving_path_table) {
+ double wait_interval = 0.2;
+ double wait_timeout = 5;
+ double wait_start = OS::time();
+ while (_saving_path_table) {
+ OS::sleep(wait_interval);
+ if (OS::time() > (wait_start + wait_timeout)) {
+ ERROR("Could not save path table to storage, waiting for previous save operation timed out.");
+ return false;
+ }
+ }
+ }
+
+ try {
+ _saving_path_table = true;
+ double save_start = OS::time();
+ DEBUGF("Saving %d path table entries to storage...", _destination_table.size());
+
+ // Enforce maxpersist: create a trimmed copy for serialization
+ // keeping only the destinations with the best-score paths
+ std::map<Bytes, std::deque<PathEntry>> persist_table;
+ if (_destination_table.size() <= _path_table_maxpersist) {
+ persist_table = _destination_table;
+ }
+ else {
+ // Sort destinations by best path score, keep top N
+ double now = OS::time();
+ std::vector<std::pair<Bytes, double>> scored;
+ for (auto& [dest_hash, deque] : _destination_table) {
+ double best_score = -1.0;
+ for (const auto& entry : deque) {
+ if (entry.is_expired(now)) continue;
+ Interface iface = find_interface_from_hash(entry.receiving_interface);
+ double s = entry.score(iface ? iface.bitrate() : 0);
+ if (s > best_score) best_score = s;
+ }
+ if (best_score < 0) best_score = 0;
+ scored.push_back({dest_hash, best_score});
+ }
+ std::sort(scored.begin(), scored.end(),
+ [](const std::pair<Bytes, double>& a, const std::pair<Bytes, double>& b) { return a.second > b.second; });
+ for (size_t i = 0; i < _path_table_maxpersist && i < scored.size(); i++) {
+ auto iter = _destination_table.find(scored[i].first);
+ if (iter != _destination_table.end()) {
+ persist_table.insert(*iter);
+ }
+ }
+ DEBUGF("Trimmed path table from %d to %d destinations for persistence", _destination_table.size(), persist_table.size());
+ }
+#if CUSTOM
+ {
+ Persistence::_document.set(persist_table);
+ TRACEF("Transport::write_path_table: doc size %d bytes", Persistence::_document.memoryUsage());
+
+ //size_t size = 8192;
+ size_t size = Persistence::_buffer.capacity();
+TRACE("Transport::write_path_table: obtaining buffer size " + std::to_string(size) + " bytes");
+ uint8_t* buffer = Persistence::_buffer.writable(size);
+TRACE("Transport::write_path_table: buffer addr: " + std::to_string((long)buffer));
+#ifdef USE_MSGPACK
+ size_t length = serializeMsgPack(Persistence::_document, buffer, size);
+#else
+ size_t length = serializeJson(Persistence::_document, buffer, size);
+#endif
+ TRACEF("Transport::write_path_table: serialized %d bytes", length);
+ if (length < size) {
+ Persistence::_buffer.resize(length);
+ }
+ }
+ if (Persistence::_buffer.size() > 0) {
+ char destination_table_path[Type::Reticulum::FILEPATH_MAXSIZE];
+ snprintf(destination_table_path, Type::Reticulum::FILEPATH_MAXSIZE, "%s/destination_table", Reticulum::_storagepath);
+#ifndef NDEBUG
+ // CBA DEBUG Dump path table
+TRACE("Transport::write_path_table: buffer addr: " + std::to_string((long)Persistence::_buffer.data()));
+TRACE("Transport::write_path_table: buffer size " + std::to_string(Persistence::_buffer.size()) + " bytes");
+ //TRACE("SERIALIZED: destination_table");
+ //TRACE(Persistence::_buffer.toString());
+#endif
+ // Check crc to see if data has changed before writing
+ uint32_t crc = Crc::crc32(0, Persistence::_buffer.data(), Persistence::_buffer.size());
+ if (_destination_table_crc > 0 && crc == _destination_table_crc) {
+ TRACE("Transport::write_path_table: no change detected, skipping write");
+ }
+ else if (RNS::Utilities::OS::write_file(destination_table_path, Persistence::_buffer) == Persistence::_buffer.size()) {
+ TRACEF("Transport::write_path_table: wrote %d entries, %d bytes", _destination_table.size(), Persistence::_buffer.size());
+ _destination_table_crc = crc;
+ success = true;
+
+#ifndef NDEBUG
+ // CBA DEBUG Dump path table
+ //TRACE("FILE: destination_table");
+ //if (OS::read_file("/destination_table", Persistence::_buffer) > 0) {
+ // TRACE(Persistence::_buffer.toString());
+ //}
+#endif
+ }
+ else {
+ TRACE("Transport::write_path_table: write failed");
+ }
+ }
+ else {
+ TRACE("Transport::write_path_table: failed to serialize");
+ }
+#else // CUSTOM
+ uint32_t crc = Persistence::crc(persist_table);
+ if (_destination_table_crc > 0 && crc == _destination_table_crc) {
+ TRACE("Transport::write_path_table: no change detected, skipping write");
+ }
+ else {
+ TRACE("Transport::write_path_table: change detected, writing...");
+ char destination_table_path[Type::Reticulum::FILEPATH_MAXSIZE];
+ snprintf(destination_table_path, Type::Reticulum::FILEPATH_MAXSIZE, "%s/destination_table", Reticulum::_storagepath);
+ if (Persistence::serialize(persist_table, destination_table_path, _destination_table_crc) > 0) {
+ TRACEF("Transport::write_path_table: wrote %d entries, %d bytes", persist_table.size(), Persistence::_buffer.size());
+ success = true;
+ }
+ }
+#endif // CUSTOM
+
+ if (success) {
+ double save_time = OS::time() - save_start;
+ if (save_time < 1.0) {
+ //DEBUG("Saved " + std::to_string(_destination_table.size()) + " path table entries in " + std::to_string(OS::round(save_time * 1000, 1)) + " ms");
+ DEBUGF("Saved %d path table entries in %d ms", _destination_table.size(), (int)(save_time*1000));
+ }
+ else {
+ //DEBUG("Saved " + std::to_string(_destination_table.size()) + " path table entries in " + std::to_string(OS::round(save_time, 1)) + " s");
+ DEBUGF("Saved %d path table entries in %d s", _destination_table.size(), save_time);
+ }
+ }
+ }
+ catch (std::exception& e) {
+ ERRORF("Could not save path table to storage, the contained exception was: %s", e.what());
+ }
+#endif
+
+ _saving_path_table = false;
+
+ return success;
+}
+
+/*static*/ void Transport::read_tunnel_table() {
+ DEBUG("Transport::read_tunnel_table");
+#if defined(RNS_USE_FS) && defined(RNS_PERSIST_PATHS)
+// TODO
+
+#endif
+}
+
+/*static*/ void Transport::write_tunnel_table() {
+#if defined(RNS_USE_FS) && defined(RNS_PERSIST_PATHS)
+// TODO
+
+#endif
+}
+
+/*static*/ void Transport::persist_data() {
+ TRACE("Transport::persist_data()");
+ write_packet_hashlist();
+ write_path_table();
+ write_tunnel_table();
+}
+
+/*static*/ void Transport::clean_caches() {
+ TRACE("Transport::clean_caches()");
+#if defined(RNS_USE_FS) && defined(RNS_PERSIST_PATHS)
+ // CBA Remove cached packets no longer in path list
+ std::list<std::string> files = OS::list_directory(Reticulum::_cachepath);
+ for (auto& file : files) {
+ TRACE("Transport::clean_caches: Checking for use of cached packet " + file);
+ bool found = false;
+ for (auto& [destination_hash, deque] : _destination_table) {
+ for (auto& entry : deque) {
+ if (file.compare(entry.packet_hash.toHex()) == 0) {
+ found = true;
+ break;
+ }
+ }
+ if (found) break;
+ }
+ if (!found) {
+ TRACE("Transport::clean_caches: No matching path found, removing cached packet " + file);
+ char packet_cache_path[Type::Reticulum::FILEPATH_MAXSIZE];
+ snprintf(packet_cache_path, Type::Reticulum::FILEPATH_MAXSIZE, "%s/%s", Reticulum::_cachepath, file.c_str());
+ OS::remove_file(packet_cache_path);
+ }
+ }
+#endif
+}
+
+/*static*/ void Transport::clear_caches_in_memory() {
+ TRACE("Transport::clear_caches_in_memory()");
+
+ // Clear the packet hashlist (duplicate detection, ~100 × 40 bytes = ~4KB)
+ if (!_packet_hashlist.empty()) {
+ size_t before = _packet_hashlist.size();
+ _packet_hashlist.clear();
+ DEBUGF("Transport::clear_caches_in_memory: cleared %d packet hashlist entries", before);
+ }
+
+ // Clear global anti-replay blobs (capped at 8 × ~80 bytes = ~640 bytes)
+ if (!_global_blobs.empty()) {
+ size_t before = _global_blobs.size();
+ _global_blobs.clear();
+ DEBUGF("Transport::clear_caches_in_memory: cleared %d global blobs", before);
+ }
+
+ // Clear announce rate table
+ if (!_announce_rate_table.empty()) {
+ size_t before = _announce_rate_table.size();
+ _announce_rate_table.clear();
+ DEBUGF("Transport::clear_caches_in_memory: cleared %d announce rate entries", before);
+ }
+
+ // Clear discovery path request tags
+ if (!_discovery_pr_tags.empty()) {
+ size_t before = _discovery_pr_tags.size();
+ _discovery_pr_tags.clear();
+ DEBUGF("Transport::clear_caches_in_memory: cleared %d discovery PR tags", before);
+ }
+
+ cull_path_table();
+}
+
+/*static*/ void Transport::dump_stats() {
+
+ OS::dump_heap_stats();
+
+ size_t mem_used = OS::heap_size() - OS::heap_available();
+ size_t flash_used = OS::storage_size() - OS::storage_available();
+
+ if (_last_memory == 0) {
+ _last_memory = mem_used;
+ }
+ if (_last_flash == 0) {
+ _last_flash = flash_used;
+ }
+
+ // memory
+ // storage
+ // _destinations
+ // _destination_table
+ // _reverse_table
+ // _announce_table
+ // _held_announces
+ HEADF(LOG_VERBOSE, "heap: %u/%u (%u%%) [%+d] flash: %u/%u (%u%%) [%+d] paths: %u dsts: %u revr: %u annc: %u held: %u", mem_used, OS::heap_size(), (int)((double)mem_used / (double)OS::heap_size() * 100.0), mem_used - _last_memory, flash_used, OS::storage_size(), (int)((double)flash_used / (double)OS::storage_size() * 100.0), flash_used - _last_flash, _destination_table.size(), _destinations.size(), _reverse_table.size(), _announce_table.size(), _held_announces.size());
+
+ // _path_requests
+ // _discovery_path_requests
+ // _pending_local_path_requests
+ // _discovery_pr_tags
+ // _control_destinations
+ // _control_hashes
+ VERBOSEF("preqs: %u dpreqs: %u ppreqs: %u dprt: %u cdsts: %u chshs: %u", _path_requests.size(), _discovery_path_requests.size(), _pending_local_path_requests.size(), _discovery_pr_tags.size(), _control_destinations.size(), _control_hashes.size());
+
+ // _packet_hashlist
+ // _receipts
+ // _link_table
+ // _pending_links
+ // _active_links
+ // _tunnels
+ uint32_t destination_path_responses = 0;
+ for (auto& [destination_hash, destination] : _destinations) {
+ destination_path_responses += destination.path_responses().size();
+ }
+ uint32_t interface_announces = 0;
+ for (auto& [interface_hash, interface] : _interfaces) {
+ interface_announces += interface.announce_queue().size();
+ }
+ VERBOSEF("phl: %u rcp: %u lt: %u pl: %u al: %u tun: %u", _packet_hashlist.size(), _receipts.size(), _link_table.size(), _pending_links.size(), _active_links.size(), _tunnels.size());
+ VERBOSEF("bla: %u bma: %u", _firewall_local_addresses.size(), _firewall_mentioned_addresses.size());
+ VERBOSEF("pin: %u pout: %u padd: %u dpr: %u ikd: %u ia: %u\r\n", _packets_received, _packets_sent, _destinations_added, destination_path_responses, Identity::_known_destinations.size(), interface_announces);
+
+ _last_memory = mem_used;
+ _last_flash = flash_used;
+
+}
+
+/*static*/ void Transport::dump_whitelists() {
+#ifdef FIREWALL_MODE
+ Serial.printf("[WL#1] %u entries:", _firewall_local_addresses.size());
+ for (auto& addr : _firewall_local_addresses) {
+ Serial.printf(" %s", addr.toHex().substr(0,8).c_str());
+ }
+ Serial.printf("\r\n");
+ Serial.printf("[WL#2] %u entries:", _firewall_mentioned_addresses.size());
+ for (auto& addr : _firewall_mentioned_addresses) {
+ Serial.printf(" %s", addr.toHex().substr(0,8).c_str());
+ }
+ Serial.printf("\r\n");
+#endif
+}
+
+/*static*/ void Transport::exit_handler() {
+ TRACE("Transport::exit_handler()");
+ if (!_owner.is_connected_to_shared_instance()) {
+ persist_data();
+ }
+}
+
+/*static*/ Destination Transport::find_destination_from_hash(const Bytes& destination_hash) {
+ TRACE("Transport::find_destination_from_hash: Searching for destination " + destination_hash.toHex());
+#if defined(DESTINATIONS_SET)
+ for (const Destination& destination : _destinations) {
+ if (destination.get_hash() == destination_hash) {
+ TRACE("Transport::find_destination_from_hash: Found destination " + destination.toString());
+ return destination;
+ }
+ }
+#elif defined(DESTINATIONS_MAP)
+ auto iter = _destinations.find(destination_hash);
+ if (iter != _destinations.end()) {
+ TRACE("Transport::find_destination_from_hash: Found destination " + (*iter).second.toString());
+ return (*iter).second;
+ }
+#endif
+
+ return {Type::NONE};
+}
+
+/*static*/ void Transport::cull_path_table() {
+ TRACE("Transport::cull_path_table()");
+ double now = OS::time();
+
+ // Pass 1: Remove individual expired entries from each deque
+ std::vector<Bytes> empty_dests;
+ for (auto& [dest_hash, deque] : _destination_table) {
+ deque.erase(std::remove_if(deque.begin(), deque.end(),
+ [now](const PathEntry& e) { return e.is_expired(now); }),
+ deque.end());
+ if (deque.empty()) {
+ empty_dests.push_back(dest_hash);
+ }
+ }
+ // Remove empty destination entries
+ for (const auto& dest_hash : empty_dests) {
+ _destination_table.erase(dest_hash);
+ }
+
+ // Pass 2: If still over maxsize, evict destinations with the lowest-score best path
+ if (_destination_table.size() > _path_table_maxsize) {
+ // Build sorted list: (dest_hash, best_score) ascending
+ std::vector<std::pair<Bytes, double>> scored;
+ for (auto& [dest_hash, deque] : _destination_table) {
+ double best_score = -1.0;
+ for (const auto& entry : deque) {
+ if (entry.is_expired(now)) continue;
+ Interface iface = find_interface_from_hash(entry.receiving_interface);
+ double s = entry.score(iface ? iface.bitrate() : 0);
+ if (s > best_score) best_score = s;
+ }
+ if (best_score < 0) best_score = 0; // all expired, score 0
+ scored.push_back({dest_hash, best_score});
+ }
+ std::sort(scored.begin(), scored.end(),
+ [](const std::pair<Bytes, double>& a, const std::pair<Bytes, double>& b) { return a.second < b.second; });
+
+ uint16_t count = 0;
+ for (const auto& [dest_hash, score] : scored) {
+ if (_destination_table.size() <= _path_table_maxsize) break;
+ TRACE("Transport::cull_path_table: Removing destination " + dest_hash.toHex() + " from path table (score=" + std::to_string(score) + ")");
+ _destination_table.erase(dest_hash);
+ ++count;
+ }
+ if (count > 0) {
+ DEBUG("Removed " + std::to_string(count) + " path(s) from path table");
+ }
+ }
+}
+
+/*static*/ uint16_t Transport::remove_reverse_entries(const std::vector<Bytes>& hashes) {
+ uint16_t count = 0;
+ for (const auto& truncated_packet_hash : hashes) {
+ flatmap_erase(_reverse_table, truncated_packet_hash);
+ ++count;
+ }
+ if (count > 0) {
+ TRACEF("Released %u reverse table entries", count);
+ }
+ return count;
+}
+
+/*static*/ uint16_t Transport::remove_links(const std::vector<Bytes>& hashes) {
+ uint16_t count = 0;
+ for (const auto& link_id : hashes) {
+ _link_table.erase(link_id);
+ ++count;
+ }
+ if (count > 0) {
+ TRACEF("Released %u links", count);
+ }
+ return count;
+}
+
+/*static*/ uint16_t Transport::remove_paths(const std::vector<Bytes>& hashes) {
+ uint16_t count = 0;
+ for (const auto& destination_hash : hashes) {
+ //_destination_table.erase(destination_hash);
+ remove_path(destination_hash);
+ ++count;
+ }
+ if (count > 0) {
+ TRACEF("Released %u paths", count);
+ }
+ return count;
+}
+
+/*static*/ uint16_t Transport::remove_discovery_path_requests(const std::vector<Bytes>& hashes) {
+ uint16_t count = 0;
+ for (const auto& destination_hash : hashes) {
+ flatmap_erase(_discovery_path_requests, destination_hash);
+ ++count;
+ // Also clean up _discovery_pr_tags so future path requests
+ // for this destination are not permanently suppressed.
+ // unique_tag = destination_hash (16B) + tag_bytes (1-16B)
+ for (auto it = _discovery_pr_tags.begin(); it != _discovery_pr_tags.end(); ) {
+ if (it->size() >= destination_hash.size() && it->left(destination_hash.size()) == destination_hash) {
+ it = _discovery_pr_tags.erase(it);
+ } else {
+ ++it;
+ }
+ }
+ }
+ if (count > 0) {
+ TRACEF("Released %u waiting path requests", count);
+ }
+ return count;
+}
+
+/*static*/ uint16_t Transport::remove_tunnels(const std::vector<Bytes>& hashes) {
+ uint16_t count = 0;
+ for (const auto& tunnel_id : hashes) {
+ _tunnels.erase(tunnel_id);
+ ++count;
+ }
+ if (count > 0) {
+ TRACEF("Released %u tunnels", count);
+ }
+ return count;
+}
diff --git a/log.log b/log.log
index ea7ca14..64c171e 100644
--- a/log.log
+++ b/log.log
@@ -1,1960 +1,76 @@
-08:44:08.256 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=242 type=1 ctx=0 hdr=1 dstt=0 hops=4 dst=f470ea87 ref=f470ea87 (BLACKLISTED) tid=5a94e5d8
-08:44:08.258 [VRB] [PKT] DROP boundary dst=f470ea87 ref=f470ea87 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:44:08.516 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=242 type=1 ctx=0 hdr=1 dstt=0 hops=5 dst=f470ea87 ref=f470ea87 (BLACKLISTED) tid=682e34ed
-08:44:08.517 [VRB] [PKT] DROP boundary dst=f470ea87 ref=f470ea87 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:44:09.280 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=183 type=1 ctx=0 hdr=1 dstt=0 hops=4 dst=87f98b1d ref=87f98b1d (BLACKLISTED) tid=5a94e5d8
-08:44:09.281 [VRB] [PKT] DROP boundary dst=87f98b1d ref=87f98b1d (BLACKLISTED) type=1 ctx=0 hdr=1
-08:44:09.592 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=183 type=1 ctx=0 hdr=1 dstt=0 hops=4 dst=87f98b1d ref=87f98b1d (BLACKLISTED) tid=682e34ed
-08:44:09.594 [VRB] [PKT] DROP boundary dst=87f98b1d ref=87f98b1d (BLACKLISTED) type=1 ctx=0 hdr=1
-08:44:10.203 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=235 type=1 ctx=0 hdr=1 dstt=0 hops=2 dst=a00c62a3 ref=a00c62a3 (BLACKLISTED) tid=5a94e5d8
-08:44:10.204 [VRB] [PKT] DROP boundary dst=a00c62a3 ref=a00c62a3 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:44:11.532 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=183 type=1 ctx=0 hdr=1 dstt=0 hops=5 dst=117e39e8 ref=117e39e8 (BLACKLISTED) tid=5a94e5d8
-08:44:11.534 [VRB] [PKT] DROP boundary dst=117e39e8 ref=117e39e8 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:44:11.705 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=235 type=1 ctx=0 hdr=1 dstt=0 hops=4 dst=a00c62a3 ref=a00c62a3 (BLACKLISTED) tid=682e34ed
-08:44:11.706 [VRB] [PKT] DROP boundary dst=a00c62a3 ref=a00c62a3 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:44:11.713 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=183 type=1 ctx=0 hdr=1 dstt=0 hops=5 dst=117e39e8 ref=117e39e8 (BLACKLISTED) tid=682e34ed
-08:44:11.715 [VRB] [PKT] DROP boundary dst=117e39e8 ref=117e39e8 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:44:11.838 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=fa8d442b (WHITELISTED) tid=none
-08:44:11.840 [VRB] [HEAP-TEL] boundary: -800 bytes (bma=0 phl=4)
-08:44:11.842 [VRB] [PATH] REQ dst=fa8d442b (WHITELISTED) from=Interface[BackboneInterface3] local=0 sz=48
-08:44:11.844 [VRB] [HEAP-TEL] inbound: -1008 bytes (heap=198600 pin=12 bma=0 phl=5 lt=0 revr=0)
-08:44:14.507 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=a3dfea28 (WHITELISTED) tid=none
-08:44:14.509 [VRB] [HEAP-TEL] boundary: -804 bytes (bma=0 phl=5)
-08:44:14.511 [VRB] [PATH] REQ dst=a3dfea28 (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:44:14.513 [VRB] [HEAP-TEL] inbound: -1012 bytes (heap=198276 pin=13 bma=0 phl=6 lt=0 revr=0)
-08:44:17.091 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=1ff2d332 (WHITELISTED) tid=none
-08:44:17.093 [VRB] [HEAP-TEL] boundary: -808 bytes (bma=0 phl=6)
-08:44:17.095 [VRB] [PATH] REQ dst=1ff2d332 (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:44:17.097 [VRB] [HEAP-TEL] inbound: -1012 bytes (heap=197948 pin=14 bma=0 phl=7 lt=0 revr=0)
-08:44:20.038 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=245 type=1 ctx=0 hdr=1 dstt=0 hops=3 dst=65593bec ref=65593bec (BLACKLISTED) tid=682e34ed
-08:44:20.039 [VRB] [PKT] DROP boundary dst=65593bec ref=65593bec (BLACKLISTED) type=1 ctx=0 hdr=1
-08:44:22.284 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=995cc385 (WHITELISTED) tid=none
-08:44:22.285 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=0 phl=7)
-08:44:22.287 [VRB] [PATH] REQ dst=995cc385 (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:44:22.289 [VRB] [HEAP-TEL] inbound: -964 bytes (heap=197928 pin=16 bma=0 phl=8 lt=0 revr=0)
-08:44:22.312 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=b81ece76 (WHITELISTED) tid=none
-08:44:22.314 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=0 phl=8)
-08:44:22.317 [VRB] [PATH] REQ dst=b81ece76 (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:44:22.319 [VRB] [HEAP-TEL] inbound: -968 bytes (heap=197136 pin=17 bma=0 phl=9 lt=0 revr=0)
-08:44:22.361 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=ff3c9e94 (WHITELISTED) tid=none
-08:44:22.362 [VRB] [HEAP-TEL] boundary: -776 bytes (bma=0 phl=9)
-08:44:22.364 [VRB] [PATH] REQ dst=ff3c9e94 (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:44:22.366 [VRB] [HEAP-TEL] inbound: -984 bytes (heap=197004 pin=18 bma=0 phl=10 lt=0 revr=0)
-08:44:23.947 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=487e151e (WHITELISTED) tid=none
-08:44:23.948 [VRB] [HEAP-TEL] boundary: -564 bytes (bma=0 phl=10)
-08:44:23.950 [VRB] [PATH] REQ dst=487e151e (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:44:23.952 [VRB] [HEAP-TEL] inbound: -744 bytes (heap=196664 pin=19 bma=0 phl=11 lt=0 revr=0)
-08:44:23.956 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=a1e06e83 (WHITELISTED) tid=none
-08:44:23.957 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=0 phl=11)
-08:44:23.959 [VRB] [PATH] REQ dst=a1e06e83 (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:44:23.961 [VRB] [HEAP-TEL] inbound: -964 bytes (heap=196124 pin=20 bma=0 phl=12 lt=0 revr=0)
-08:44:23.965 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=a1e06e83 (WHITELISTED) tid=none
-08:44:23.967 [VRB] [HEAP-TEL] boundary: -768 bytes (bma=0 phl=12)
-08:44:23.969 [VRB] [PATH] REQ dst=a1e06e83 (WHITELISTED) from=Interface[BackboneInterface3] local=0 sz=48
-08:44:23.970 [VRB] [HEAP-TEL] inbound: -816 bytes (heap=196000 pin=21 bma=0 phl=13 lt=0 revr=0)
-08:44:24.007 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=a64bd83e (WHITELISTED) tid=none
-08:44:24.008 [VRB] [HEAP-TEL] boundary: -780 bytes (bma=0 phl=13)
-08:44:24.010 [VRB] [PATH] REQ dst=a64bd83e (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:44:24.012 [VRB] [HEAP-TEL] inbound: -984 bytes (heap=195864 pin=22 bma=0 phl=14 lt=0 revr=0)
-08:44:24.214 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=196 type=1 ctx=0 hdr=1 dstt=0 hops=5 dst=e6b0ec6a ref=e6b0ec6a (BLACKLISTED) tid=682e34ed
-08:44:24.215 [VRB] [PKT] DROP boundary dst=e6b0ec6a ref=e6b0ec6a (BLACKLISTED) type=1 ctx=0 hdr=1
-[TcpIF] Connecting to rns.birdsnet.co.br:4242 (DNS)...
-[ 25995][E][WiFiGeneric.cpp:1583] hostByName(): DNS Failed for rns.birdsnet.co.br
-[TcpIF] DNS failed for rns.birdsnet.co.br
-[TcpIF] Failed to connect to rns.birdsnet.co.br:4242 (attempt 2, next retry in 40s)
-08:44:24.867 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=f15d1a3d (WHITELISTED) tid=none
-08:44:24.868 [VRB] [HEAP-TEL] boundary: -776 bytes (bma=0 phl=14)
-08:44:24.870 [VRB] [PATH] REQ dst=f15d1a3d (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:44:24.872 [VRB] [HEAP-TEL] inbound: -980 bytes (heap=195540 pin=24 bma=0 phl=15 lt=0 revr=0)
-08:44:25.155 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=6f8c74c2 (WHITELISTED) tid=none
-08:44:25.156 [VRB] [HEAP-TEL] boundary: -768 bytes (bma=0 phl=15)
-08:44:25.158 [VRB] [PATH] REQ dst=6f8c74c2 (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:44:25.161 [VRB] [HEAP-TEL] inbound: -1368 bytes (heap=194836 pin=25 bma=0 phl=16 lt=0 revr=0)
-08:44:25.168 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=232 type=1 ctx=0 hdr=1 dstt=0 hops=5 dst=54de691b ref=54de691b (BLACKLISTED) tid=682e34ed
-08:44:25.170 [VRB] [PKT] DROP boundary dst=54de691b ref=54de691b (BLACKLISTED) type=1 ctx=0 hdr=1
-08:44:26.386 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=192 type=1 ctx=0 hdr=1 dstt=0 hops=3 dst=113bb8ba ref=113bb8ba (BLACKLISTED) tid=682e34ed
-08:44:26.387 [VRB] [PKT] DROP boundary dst=113bb8ba ref=113bb8ba (BLACKLISTED) type=1 ctx=0 hdr=1
-08:44:26.393 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=183 type=1 ctx=0 hdr=1 dstt=0 hops=4 dst=0dbe8fac ref=0dbe8fac (BLACKLISTED) tid=682e34ed
-08:44:26.394 [VRB] [PKT] DROP boundary dst=0dbe8fac ref=0dbe8fac (BLACKLISTED) type=1 ctx=0 hdr=1
-08:44:26.402 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=233 type=1 ctx=0 hdr=1 dstt=0 hops=4 dst=419b2f8d ref=419b2f8d (BLACKLISTED) tid=682e34ed
-08:44:26.404 [VRB] [PKT] DROP boundary dst=419b2f8d ref=419b2f8d (BLACKLISTED) type=1 ctx=0 hdr=1
-08:44:27.509 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=231 type=1 ctx=0 hdr=1 dstt=0 hops=4 dst=e36c13fd ref=e36c13fd (BLACKLISTED) tid=5a94e5d8
-08:44:27.511 [VRB] [PKT] DROP boundary dst=e36c13fd ref=e36c13fd (BLACKLISTED) type=1 ctx=0 hdr=1
-08:44:27.554 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=192 type=1 ctx=0 hdr=1 dstt=0 hops=5 dst=113bb8ba ref=113bb8ba (BLACKLISTED) tid=5a94e5d8
-08:44:27.555 [VRB] [PKT] DROP boundary dst=113bb8ba ref=113bb8ba (BLACKLISTED) type=1 ctx=0 hdr=1
-08:44:27.651 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=233 type=1 ctx=0 hdr=1 dstt=0 hops=6 dst=419b2f8d ref=419b2f8d (BLACKLISTED) tid=5a94e5d8
-08:44:27.653 [VRB] [PKT] DROP boundary dst=419b2f8d ref=419b2f8d (BLACKLISTED) type=1 ctx=0 hdr=1
-08:44:27.916 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=4cce8a55 (WHITELISTED) tid=none
-08:44:27.917 [VRB] [HEAP-TEL] boundary: -768 bytes (bma=0 phl=16)
-08:44:27.919 [VRB] [PATH] REQ dst=4cce8a55 (WHITELISTED) from=Interface[BackboneInterface3] local=0 sz=48
-08:44:27.921 [VRB] [HEAP-TEL] inbound: -972 bytes (heap=194912 pin=33 bma=0 phl=17 lt=0 revr=0)
-08:44:30.683 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=245 type=1 ctx=0 hdr=1 dstt=0 hops=3 dst=65593bec ref=65593bec (BLACKLISTED) tid=682e34ed
-08:44:30.684 [VRB] [PKT] DROP boundary dst=65593bec ref=65593bec (BLACKLISTED) type=1 ctx=0 hdr=1
-08:44:31.507 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=191 type=1 ctx=0 hdr=1 dstt=0 hops=3 dst=ce80d141 ref=ce80d141 (BLACKLISTED) tid=5a94e5d8
-08:44:31.508 [VRB] [PKT] DROP boundary dst=ce80d141 ref=ce80d141 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:44:31.514 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=191 type=1 ctx=0 hdr=1 dstt=0 hops=3 dst=6162c1d3 ref=6162c1d3 (BLACKLISTED) tid=5a94e5d8
-08:44:31.515 [VRB] [PKT] DROP boundary dst=6162c1d3 ref=6162c1d3 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:44:31.547 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=191 type=1 ctx=0 hdr=1 dstt=0 hops=3 dst=ce80d141 ref=ce80d141 (BLACKLISTED) tid=682e34ed
-08:44:31.549 [VRB] [PKT] DROP boundary dst=ce80d141 ref=ce80d141 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:44:31.562 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=191 type=1 ctx=0 hdr=1 dstt=0 hops=3 dst=6162c1d3 ref=6162c1d3 (BLACKLISTED) tid=682e34ed
-08:44:31.564 [VRB] [PKT] DROP boundary dst=6162c1d3 ref=6162c1d3 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:44:33.159 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=d64d65bc (WHITELISTED) tid=none
-08:44:33.160 [VRB] [HEAP-TEL] boundary: -776 bytes (bma=0 phl=17)
-08:44:33.162 [VRB] [PATH] REQ dst=d64d65bc (WHITELISTED) from=Interface[BackboneInterface3] local=0 sz=48
-08:44:33.164 [VRB] [HEAP-TEL] inbound: -980 bytes (heap=194584 pin=39 bma=0 phl=18 lt=0 revr=0)
-08:44:33.859 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=191 type=1 ctx=0 hdr=1 dstt=0 hops=3 dst=c3c43046 ref=c3c43046 (BLACKLISTED) tid=682e34ed
-08:44:33.861 [VRB] [PKT] DROP boundary dst=c3c43046 ref=c3c43046 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:44:33.865 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=a346e109 (WHITELISTED) tid=none
-08:44:33.867 [VRB] [HEAP-TEL] boundary: -792 bytes (bma=0 phl=18)
-08:44:33.870 [VRB] [PATH] REQ dst=a346e109 (WHITELISTED) from=Interface[BackboneInterface3] local=0 sz=48
-08:44:33.873 [VRB] [HEAP-TEL] inbound: -1036 bytes (heap=194192 pin=41 bma=0 phl=19 lt=0 revr=0)
-08:44:33.879 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=191 type=1 ctx=0 hdr=1 dstt=0 hops=3 dst=c3c43046 ref=c3c43046 (BLACKLISTED) tid=5a94e5d8
-08:44:33.881 [VRB] [PKT] DROP boundary dst=c3c43046 ref=c3c43046 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:44:34.475 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=5184b281 (WHITELISTED) tid=none
-08:44:34.476 [VRB] [HEAP-TEL] boundary: -780 bytes (bma=0 phl=19)
-08:44:34.478 [VRB] [PATH] REQ dst=5184b281 (WHITELISTED) from=Interface[BackboneInterface3] local=0 sz=48
-08:44:34.480 [VRB] [HEAP-TEL] inbound: -984 bytes (heap=193760 pin=43 bma=0 phl=20 lt=0 revr=0)
-08:44:35.922 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=183 type=1 ctx=0 hdr=1 dstt=0 hops=2 dst=01ea7006 ref=01ea7006 (BLACKLISTED) tid=5a94e5d8
-08:44:35.924 [VRB] [PKT] DROP boundary dst=01ea7006 ref=01ea7006 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:44:36.850 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=183 type=1 ctx=0 hdr=1 dstt=0 hops=3 dst=01ea7006 ref=01ea7006 (BLACKLISTED) tid=682e34ed
-08:44:36.851 [VRB] [PKT] DROP boundary dst=01ea7006 ref=01ea7006 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:44:36.857 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=183 type=1 ctx=0 hdr=1 dstt=0 hops=3 dst=b5ee8c12 ref=b5ee8c12 (BLACKLISTED) tid=682e34ed
-08:44:36.858 [VRB] [PKT] DROP boundary dst=b5ee8c12 ref=b5ee8c12 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:44:36.864 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=183 type=1 ctx=0 hdr=1 dstt=0 hops=2 dst=b5ee8c12 ref=b5ee8c12 (BLACKLISTED) tid=5a94e5d8
-08:44:36.866 [VRB] [PKT] DROP boundary dst=b5ee8c12 ref=b5ee8c12 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:44:37.137 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=a3dfea28 (WHITELISTED) tid=none
-08:44:37.139 [VRB] [HEAP-TEL] boundary: -772 bytes (bma=0 phl=20)
-08:44:37.141 [VRB] [PATH] REQ dst=a3dfea28 (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:44:37.143 [VRB] [HEAP-TEL] inbound: -976 bytes (heap=193396 pin=48 bma=0 phl=21 lt=0 revr=0)
-08:44:37.147 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=578cd951 (WHITELISTED) tid=none
-08:44:37.148 [VRB] [HEAP-TEL] boundary: -772 bytes (bma=0 phl=21)
-08:44:37.151 [VRB] [PATH] REQ dst=578cd951 (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:44:37.153 [VRB] [HEAP-TEL] inbound: -768 bytes (heap=193276 pin=49 bma=0 phl=22 lt=0 revr=0)
-08:44:37.755 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=285a9ce3 (WHITELISTED) tid=none
-08:44:37.756 [VRB] [HEAP-TEL] boundary: -768 bytes (bma=0 phl=22)
-08:44:37.758 [VRB] [PATH] REQ dst=285a9ce3 (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:44:37.760 [VRB] [HEAP-TEL] inbound: -976 bytes (heap=192948 pin=50 bma=0 phl=23 lt=0 revr=0)
-08:44:38.019 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=285a9ce3 (WHITELISTED) tid=none
-08:44:38.021 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=0 phl=23)
-08:44:38.023 [VRB] [PATH] REQ dst=285a9ce3 (WHITELISTED) from=Interface[BackboneInterface3] local=0 sz=48
-08:44:38.024 [VRB] [HEAP-TEL] inbound: -812 bytes (heap=192796 pin=51 bma=0 phl=24 lt=0 revr=0)
-08:44:38.877 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=214 type=1 ctx=0 hdr=1 dstt=0 hops=2 dst=d0e364f3 ref=d0e364f3 (BLACKLISTED) tid=682e34ed
-08:44:38.878 [VRB] [PKT] DROP boundary dst=d0e364f3 ref=d0e364f3 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:44:39.196 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=214 type=1 ctx=0 hdr=1 dstt=0 hops=2 dst=d0e364f3 ref=d0e364f3 (BLACKLISTED) tid=5a94e5d8
-08:44:39.197 [VRB] [PKT] DROP boundary dst=d0e364f3 ref=d0e364f3 (BLACKLISTED) type=1 ctx=0 hdr=1
-[TcpIF] Client 0 connected from 192.168.2.117
-08:44:39.815 [VRB] [PKT] IN iface=Interface[LocalTcpInterface] sz=195 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=91bf0910 ref=91bf0910 (WHITELISTED) tid=none
-08:44:39.817 [VRB] [HEAP-TEL] boundary: -836 bytes (bma=1 phl=24)
-08:44:39.818 [VRB] [HEAP-TEL] inbound: -884 bytes (heap=188816 pin=54 bma=1 phl=25 lt=0 revr=0)
-08:44:43.502 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=216 type=1 ctx=0 hdr=1 dstt=0 hops=4 dst=36e19002 ref=36e19002 (BLACKLISTED) tid=5a94e5d8
-08:44:43.503 [VRB] [PKT] DROP boundary dst=36e19002 ref=36e19002 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:44:43.895 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=29b8fc2f (WHITELISTED) tid=none
-08:44:43.896 [VRB] [HEAP-TEL] boundary: -776 bytes (bma=1 phl=25)
-08:44:43.898 [VRB] [PATH] REQ dst=29b8fc2f (WHITELISTED) from=Interface[BackboneInterface3] local=0 sz=48
-08:44:43.900 [VRB] [HEAP-TEL] inbound: -980 bytes (heap=190080 pin=56 bma=1 phl=26 lt=0 revr=0)
-08:44:44.019 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=202 type=1 ctx=0 hdr=1 dstt=0 hops=5 dst=b08d6a40 ref=b08d6a40 (BLACKLISTED) tid=682e34ed
-08:44:44.021 [VRB] [PKT] DROP boundary dst=b08d6a40 ref=b08d6a40 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:44:46.046 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=209 type=1 ctx=0 hdr=1 dstt=0 hops=1 dst=47850a3b ref=47850a3b (BLACKLISTED) tid=682e34ed
-08:44:46.048 [VRB] [PKT] DROP boundary dst=47850a3b ref=47850a3b (BLACKLISTED) type=1 ctx=0 hdr=1
-08:44:47.072 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=6f8c74c2 (WHITELISTED) tid=none
-08:44:47.073 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=1 phl=26)
-08:44:47.075 [VRB] [PATH] REQ dst=6f8c74c2 (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:44:47.077 [VRB] [HEAP-TEL] inbound: -968 bytes (heap=190028 pin=59 bma=1 phl=27 lt=0 revr=0)
-08:44:47.245 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=487e151e (WHITELISTED) tid=none
-08:44:47.247 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=1 phl=27)
-08:44:47.249 [VRB] [PATH] REQ dst=487e151e (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:44:47.251 [VRB] [HEAP-TEL] inbound: -964 bytes (heap=189424 pin=60 bma=1 phl=28 lt=0 revr=0)
-08:44:47.255 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=a64bd83e (WHITELISTED) tid=none
-08:44:47.256 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=1 phl=28)
-08:44:47.258 [VRB] [PATH] REQ dst=a64bd83e (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:44:47.260 [VRB] [HEAP-TEL] inbound: -968 bytes (heap=189096 pin=61 bma=1 phl=29 lt=0 revr=0)
-08:44:47.264 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=f15d1a3d (WHITELISTED) tid=none
-08:44:47.265 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=1 phl=29)
-08:44:47.267 [VRB] [PATH] REQ dst=f15d1a3d (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:44:47.269 [VRB] [HEAP-TEL] inbound: -968 bytes (heap=188812 pin=62 bma=1 phl=30 lt=0 revr=0)
-08:44:49.325 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=43130add (WHITELISTED) tid=none
-08:44:49.327 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=1 phl=30)
-08:44:49.329 [VRB] [PATH] REQ dst=43130add (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:44:49.331 [VRB] [HEAP-TEL] inbound: -968 bytes (heap=188492 pin=63 bma=1 phl=31 lt=0 revr=0)
-08:44:50.342 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=7550d6ec (WHITELISTED) tid=none
-08:44:50.343 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=1 phl=31)
-08:44:50.345 [VRB] [PATH] REQ dst=7550d6ec (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:44:50.347 [VRB] [HEAP-TEL] inbound: -972 bytes (heap=188148 pin=64 bma=1 phl=32 lt=0 revr=0)
-08:44:53.209 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=a1f39935 (WHITELISTED) tid=none
-08:44:53.210 [VRB] [HEAP-TEL] boundary: -776 bytes (bma=1 phl=32)
-08:44:53.212 [VRB] [PATH] REQ dst=a1f39935 (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:44:53.214 [VRB] [HEAP-TEL] inbound: -980 bytes (heap=187820 pin=65 bma=1 phl=33 lt=0 revr=0)
-08:44:54.446 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=321 type=1 ctx=0 hdr=1 dstt=0 hops=3 dst=5ada6c2c ref=5ada6c2c (BLACKLISTED) tid=682e34ed
-08:44:54.448 [VRB] [PKT] DROP boundary dst=5ada6c2c ref=5ada6c2c (BLACKLISTED) type=1 ctx=0 hdr=1
-08:44:54.452 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=bb6297c1 (WHITELISTED) tid=none
-08:44:54.454 [VRB] [HEAP-TEL] boundary: -776 bytes (bma=1 phl=33)
-08:44:54.456 [VRB] [PATH] REQ dst=bb6297c1 (WHITELISTED) from=Interface[BackboneInterface3] local=0 sz=48
-08:44:54.458 [VRB] [HEAP-TEL] inbound: -980 bytes (heap=187488 pin=67 bma=1 phl=34 lt=0 revr=0)
-08:44:55.981 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=fd78b358 (WHITELISTED) tid=none
-08:44:55.983 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=1 phl=34)
-08:44:55.985 [VRB] [PATH] REQ dst=fd78b358 (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:44:55.987 [VRB] [HEAP-TEL] inbound: -964 bytes (heap=187164 pin=68 bma=1 phl=35 lt=0 revr=0)
-08:44:56.388 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=1db02860 (WHITELISTED) tid=none
-08:44:56.389 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=1 phl=35)
-08:44:56.391 [VRB] [PATH] REQ dst=1db02860 (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:44:56.393 [VRB] [HEAP-TEL] inbound: -968 bytes (heap=186832 pin=69 bma=1 phl=36 lt=0 revr=0)
-08:44:56.615 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=230 type=1 ctx=0 hdr=1 dstt=0 hops=3 dst=33f4b51e ref=33f4b51e (BLACKLISTED) tid=682e34ed
-08:44:56.616 [VRB] [PKT] DROP boundary dst=33f4b51e ref=33f4b51e (BLACKLISTED) type=1 ctx=0 hdr=1
-08:44:57.129 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=578cd951 (WHITELISTED) tid=none
-08:44:57.131 [VRB] [HEAP-TEL] boundary: -768 bytes (bma=1 phl=36)
-08:44:57.133 [VRB] [PATH] REQ dst=578cd951 (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:44:57.135 [VRB] [HEAP-TEL] inbound: -972 bytes (heap=186508 pin=71 bma=1 phl=37 lt=0 revr=0)
-08:44:57.300 [VRB] [HEAP-TEL] jobs: 156 bytes (heap=187740)
-08:44:57.748 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=285a9ce3 (WHITELISTED) tid=none
-08:44:57.750 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=1 phl=37)
-08:44:57.752 [VRB] [PATH] REQ dst=285a9ce3 (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:44:57.754 [VRB] [HEAP-TEL] inbound: -976 bytes (heap=186336 pin=72 bma=1 phl=38 lt=0 revr=0)
-08:44:57.816 [VRB] [HEAP-TEL] jobs: 156 bytes (heap=187424)
-08:45:01.812 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=207 type=1 ctx=0 hdr=1 dstt=0 hops=3 dst=da10865a ref=da10865a (BLACKLISTED) tid=682e34ed
-08:45:01.814 [VRB] [PKT] DROP boundary dst=da10865a ref=da10865a (BLACKLISTED) type=1 ctx=0 hdr=1
-08:45:02.848 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=324 type=1 ctx=0 hdr=1 dstt=0 hops=3 dst=46aafae1 ref=46aafae1 (BLACKLISTED) tid=682e34ed
-08:45:02.850 [VRB] [PKT] DROP boundary dst=46aafae1 ref=46aafae1 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:45:03.454 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=324 type=1 ctx=0 hdr=1 dstt=0 hops=5 dst=46aafae1 ref=46aafae1 (BLACKLISTED) tid=5a94e5d8
-08:45:03.456 [VRB] [PKT] DROP boundary dst=46aafae1 ref=46aafae1 (BLACKLISTED) type=1 ctx=0 hdr=1
-[TcpIF] Connecting to rns.birdsnet.co.br:4242 (DNS)...
-[ 66008][E][WiFiGeneric.cpp:1583] hostByName(): DNS Failed for rns.birdsnet.co.br
-[TcpIF] DNS failed for rns.birdsnet.co.br
-[TcpIF] Failed to connect to rns.birdsnet.co.br:4242 (attempt 3, next retry in 80s)
-08:45:04.559 [VRB] [Advertise] Building discovery announce
-08:45:04.561 [VRB] [Advertise] Generating workblock + stamp (cost=14, this may take a few seconds)
-08:45:09.839 [VRB] [Advertise] Sending interface discovery announce, payload size: 136 bytes
-08:45:09.897 [VRB] [LoRa] TX 303 bytes
-08:45:09.911 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=230 type=1 ctx=0 hdr=1 dstt=0 hops=3 dst=47829b93 ref=47829b93 (BLACKLISTED) tid=682e34ed
-08:45:09.912 [VRB] [PKT] DROP boundary dst=47829b93 ref=47829b93 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:45:09.918 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=183 type=1 ctx=0 hdr=1 dstt=0 hops=4 dst=b1eff6cb ref=b1eff6cb (BLACKLISTED) tid=682e34ed
-08:45:09.919 [VRB] [PKT] DROP boundary dst=b1eff6cb ref=b1eff6cb (BLACKLISTED) type=1 ctx=0 hdr=1
-08:45:09.925 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=219 type=1 ctx=0 hdr=1 dstt=0 hops=4 dst=d5df5822 ref=d5df5822 (BLACKLISTED) tid=682e34ed
-08:45:09.927 [VRB] [PKT] DROP boundary dst=d5df5822 ref=d5df5822 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:45:09.932 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=cf4ca0a1 (WHITELISTED) tid=none
-08:45:09.934 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=1 phl=39)
-08:45:09.937 [VRB] [PATH] REQ dst=cf4ca0a1 (WHITELISTED) from=Interface[BackboneInterface3] local=0 sz=48
-08:45:09.939 [VRB] [HEAP-TEL] inbound: -972 bytes (heap=181948 pin=79 bma=1 phl=40 lt=0 revr=0)
-08:45:09.945 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=219 type=1 ctx=0 hdr=1 dstt=0 hops=2 dst=d5df5822 ref=d5df5822 (BLACKLISTED) tid=5a94e5d8
-08:45:09.947 [VRB] [PKT] DROP boundary dst=d5df5822 ref=d5df5822 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:45:09.953 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=183 type=1 ctx=0 hdr=1 dstt=0 hops=2 dst=b1eff6cb ref=b1eff6cb (BLACKLISTED) tid=5a94e5d8
-08:45:09.955 [VRB] [PKT] DROP boundary dst=b1eff6cb ref=b1eff6cb (BLACKLISTED) type=1 ctx=0 hdr=1
-08:45:09.961 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=230 type=1 ctx=0 hdr=1 dstt=0 hops=4 dst=47829b93 ref=47829b93 (BLACKLISTED) tid=5a94e5d8
-08:45:09.963 [VRB] [PKT] DROP boundary dst=47829b93 ref=47829b93 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:45:10.006 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=195 type=1 ctx=0 hdr=1 dstt=0 hops=3 dst=8976c1b2 ref=8976c1b2 (BLACKLISTED) tid=5a94e5d8
-08:45:10.007 [VRB] [PKT] DROP boundary dst=8976c1b2 ref=8976c1b2 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:45:10.172 [VRB] [LoRa] TXSTART 303 bytes
-[Boundary] TXCFG f=914875000 sf=10 bw=4 cr=1 ldro=0 pre=18 hdr=0 len=255 crc=1 iq=0 txp=19
+(base) james@MacBook-Air-M1 RTNode-HeltecV4 % pio device monitor
+*******************************************************************
+Obsolete PIO Core v6.1.18 is used (previous was 6.1.19)
+Please remove multiple PIO Cores from a system:
+https://docs.platformio.org/en/latest/core/installation/troubleshooting.html
+*******************************************************************
+--- Terminal on /dev/cu.usbmodem101 | 115200 8-N-1
+--- Available filters and text transformations: colorize, debug, default, direct, esp32_exception_decoder, hexlify, log2file, nocontrol, printable, send_on_enter, time
+--- More details at https://bit.ly/pio-monitor-filters
+--- Quit: Ctrl+C | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H
+[HEAP] free=174008 min=168652 max_alloc=155636 psram=2054639
+[WL#1] 1 entries: 29f9a20c
+[WL#2] 14 entries: 13f4b14d 025e9ee3 28662625 15402ebc 29f9a20c aec378e9 7a3f2ded e392d652 4afdafd1 006e3732 6d6bf9d4 fbb6185a 7b6a97f1 6e9c839d
+23-02:28:07.764 [VRB] [LoRa] RX 243 bytes
+[Meshchat] [DATA] - FROM: Interface[LoRaInterface] (LAN) - TO: 13f4b14d (WAN) - WL-PASS hops=1 sz=243
+[Meshchat] [DATA] - FROM: Interface[LoRaInterface] (LAN) - TO: 13f4b14d (WAN) - LAN-IN hops=1 sz=243
+[Meshchat] [DATA] - FROM: Interface[LoRaInterface] (LAN) - TO: 13f4b14d (WAN) - FWD: Interface[BackboneInterface1] (WAN) transport hops=1
+23-02:28:07.772 [NOT] LINK-XPORT: dest 13f4b14d NOT in link_table (size=0)
+23-02:28:07.995 [VRB] [LoRa] TX 230 bytes
+23-02:28:08.193 [VRB] [LoRa] TXSTART 230 bytes
+[Boundary] TXCFG f=914875000 sf=10 bw=4 cr=1 ldro=0 pre=18 hdr=0 len=231 crc=1 iq=0 txp=19
[Boundary] TXDONE irq=0001 timeout=0 pa=1
-[Boundary] TXCFG f=914875000 sf=10 bw=4 cr=1 ldro=0 pre=18 hdr=0 len=50 crc=1 iq=0 txp=19
-[Boundary] TXDONE irq=0001 timeout=0 pa=1
-08:45:13.307 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=319 type=1 ctx=0 hdr=1 dstt=0 hops=2 dst=598c5252 ref=598c5252 (WHITELISTED) tid=682e34ed
-08:45:13.308 [VRB] [HEAP-TEL] boundary: -992 bytes (bma=1 phl=40)
-08:45:13.397 [VRB] [ANNC] IN dst=598c5252 (WHITELISTED) valid=1 ctx=0 hops=2 iface=Interface[BackboneInterface1] data=284
-08:45:13.399 [VRB] [ANNC] SKIP dst=598c5252 (WHITELISTED) valid=1 reason=local_or_invalid
-08:45:13.400 [VRB] [HEAP-TEL] inbound: -1560 bytes (heap=184168 pin=84 bma=1 phl=40 lt=0 revr=0)
-08:45:13.404 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=43130add (WHITELISTED) tid=none
-08:45:13.405 [VRB] [HEAP-TEL] boundary: -768 bytes (bma=1 phl=40)
-08:45:13.407 [VRB] [PATH] REQ dst=43130add (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:45:13.409 [VRB] [HEAP-TEL] inbound: -972 bytes (heap=184336 pin=85 bma=1 phl=41 lt=0 revr=0)
-08:45:13.413 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=a1f39935 (WHITELISTED) tid=none
-08:45:13.414 [VRB] [HEAP-TEL] boundary: -784 bytes (bma=1 phl=41)
-08:45:13.416 [VRB] [PATH] REQ dst=a1f39935 (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:45:13.418 [VRB] [HEAP-TEL] inbound: -992 bytes (heap=183992 pin=86 bma=1 phl=42 lt=0 revr=0)
-08:45:13.422 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=bccea474 (WHITELISTED) tid=none
-08:45:13.424 [VRB] [HEAP-TEL] boundary: -772 bytes (bma=1 phl=42)
-08:45:13.426 [VRB] [PATH] REQ dst=bccea474 (WHITELISTED) from=Interface[BackboneInterface3] local=0 sz=48
-08:45:13.428 [VRB] [HEAP-TEL] inbound: -976 bytes (heap=183716 pin=87 bma=1 phl=43 lt=0 revr=0)
-08:45:13.473 [VRB] mem_free: 185416 (58%) [-24708] flash_free: 3522560 (99%) [0] paths: 0 dsts: 5 revr: 0 annc: 0 held: 0
-08:45:13.474 [VRB] preqs: 0 dpreqs: 0 ppreqs: 0 dprt: 32 cdsts: 2 chshs: 2
-08:45:13.475 [VRB] phl: 43 rcp: 0 lt: 0 pl: 0 al: 0 tun: 0
-08:45:13.476 [VRB] bla: 0 bma: 1
-08:45:13.476 [VRB] pin: 87 pout: 2 padd: 0 dpr: 2 ikd: 1 ia: 0
-
-08:45:13.477 [VRB] [HEAP-TEL] jobs: 632 bytes (heap=185416)
-08:45:14.611 [VRB] [PKT] IN iface=Interface[LocalTcpInterface] sz=51 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=10d18db1 (WHITELISTED) tid=none
-08:45:14.613 [VRB] [HEAP-TEL] boundary: -816 bytes (bma=2 phl=43)
-08:45:14.615 [VRB] [PATH] REQ dst=10d18db1 (WHITELISTED) from=Interface[LocalTcpInterface] local=1 sz=32
-08:45:14.619 [VRB] [LoRa] TX 67 bytes
-08:45:14.630 [VRB] [HEAP-TEL] inbound: -4888 bytes (heap=180140 pin=88 bma=2 phl=45 lt=0 revr=0)
-08:45:14.733 [VRB] [HEAP-TEL] jobs: 156 bytes (heap=183076)
-08:45:14.828 [VRB] [LoRa] TXSTART 67 bytes
-[Boundary] TXCFG f=914875000 sf=10 bw=4 cr=1 ldro=0 pre=18 hdr=0 len=68 crc=1 iq=0 txp=19
-[Boundary] TXDONE irq=0001 timeout=0 pa=1
-08:45:15.694 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=214 type=1 ctx=11 hdr=1 dstt=0 hops=2 dst=10d18db1 ref=10d18db1 (WHITELISTED) tid=682e34ed
-08:45:15.695 [VRB] [HEAP-TEL] boundary: -892 bytes (bma=2 phl=45)
-08:45:15.787 [VRB] [ANNC] IN dst=10d18db1 (WHITELISTED) valid=1 ctx=11 hops=2 iface=Interface[BackboneInterface1] data=179
-08:45:15.798 [VRB] [PATH] RESP dst=10d18db1 (WHITELISTED) hops=2 to=Interface[LocalTcpInterface] local=0
-08:45:15.802 [VRB] [PATH] STORED dst=10d18db1 (WHITELISTED) hops=2 iface=Interface[BackboneInterface1] paths=1 bla=0
-08:45:15.803 [VRB] [HEAP-TEL] inbound: -5424 bytes (heap=178636 pin=89 bma=2 phl=47 lt=0 revr=0)
-08:45:15.809 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=214 type=1 ctx=11 hdr=1 dstt=0 hops=2 dst=10d18db1 ref=10d18db1 (WHITELISTED) tid=5a94e5d8
-08:45:15.811 [VRB] [HEAP-TEL] boundary: -896 bytes (bma=2 phl=47)
-08:45:15.903 [VRB] [ANNC] IN dst=10d18db1 (WHITELISTED) valid=1 ctx=11 hops=2 iface=Interface[BackboneInterface3] data=179
-08:45:15.910 [VRB] [PKT] IN iface=Interface[LocalTcpInterface] sz=102 type=2 ctx=0 hdr=1 dstt=0 hops=1 dst=10d18db1 ref=10d18db1 (WHITELISTED) tid=7e9c03b9
-08:45:15.911 [VRB] [HEAP-TEL] boundary: -772 bytes (bma=2 phl=47)
-08:45:15.914 [VRB] [LINK] CREATE dst=10d18db1 (WHITELISTED) link=0d810efb rem=2 recv=Interface[LocalTcpInterface] out=Interface[BackboneInterface1] lt=1
-08:45:15.918 [VRB] [HEAP-TEL] inbound: -3108 bytes (heap=179408 pin=91 bma=2 phl=48 lt=1 revr=0)
-08:45:16.126 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=118 type=3 ctx=255 hdr=0 dstt=3 hops=2 dst=0d810efb ref=0d810efb (BLACKLISTED) tid=none
-08:45:16.127 [VRB] [HEAP-TEL] boundary: -736 bytes (bma=2 phl=48)
-08:45:16.128 [VRB] [LRPROOF] IN dst=0d810efb (BLACKLISTED) hops=2 recv=Interface[BackboneInterface1] in_lt=1 for_lcl=1 from_lcl=0
-08:45:16.218 [VRB] [LRPROOF] FWD dst=0d810efb (BLACKLISTED) to=Interface[LocalTcpInterface] size=118
-08:45:16.222 [VRB] [HEAP-TEL] inbound: -2788 bytes (heap=178964 pin=92 bma=2 phl=48 lt=1 revr=0)
-08:45:16.325 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=207 type=1 ctx=0 hdr=1 dstt=0 hops=2 dst=a21f84a2 ref=a21f84a2 (BLACKLISTED) tid=682e34ed
-08:45:16.326 [VRB] [PKT] DROP boundary dst=a21f84a2 ref=a21f84a2 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:45:16.365 [VRB] [PKT] IN iface=Interface[LocalTcpInterface] sz=83 type=0 ctx=254 hdr=0 dstt=3 hops=1 dst=0d810efb ref=0d810efb (BLACKLISTED) tid=none
-08:45:16.367 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=3 phl=48)
-08:45:16.370 [VRB] [LINK] XPORT pkt=0d810efb (WHITELISTED) type=0 ctx=254 hops=0 recv=Interface[LocalTcpInterface] entry_recv=Interface[LocalTcpInterface] entry_out=Interface[BackboneInterface1] rem=2 taken=0 val=1
-08:45:16.371 [VRB] [LINK] FWD dst=0d810efb (WHITELISTED) to=Interface[BackboneInterface1] size=83
-08:45:16.375 [VRB] [HEAP-TEL] inbound: -2180 bytes (heap=179356 pin=94 bma=3 phl=49 lt=1 revr=0)
-08:45:16.381 [VRB] [PKT] IN iface=Interface[LocalTcpInterface] sz=211 type=0 ctx=251 hdr=0 dstt=3 hops=1 dst=0d810efb ref=0d810efb (WHITELISTED) tid=none
-08:45:16.382 [VRB] [HEAP-TEL] boundary: -800 bytes (bma=3 phl=49)
-08:45:16.383 [VRB] [LINK] XPORT pkt=0d810efb (WHITELISTED) type=0 ctx=251 hops=0 recv=Interface[LocalTcpInterface] entry_recv=Interface[LocalTcpInterface] entry_out=Interface[BackboneInterface1] rem=2 taken=0 val=1
-08:45:16.385 [VRB] [LINK] FWD dst=0d810efb (WHITELISTED) to=Interface[BackboneInterface1] size=211
-08:45:16.389 [VRB] [HEAP-TEL] inbound: -2856 bytes (heap=176852 pin=95 bma=3 phl=50 lt=1 revr=0)
-08:45:16.393 [VRB] [PKT] IN iface=Interface[LocalTcpInterface] sz=99 type=0 ctx=9 hdr=0 dstt=3 hops=1 dst=0d810efb ref=0d810efb (WHITELISTED) tid=none
-08:45:16.395 [VRB] [HEAP-TEL] boundary: -696 bytes (bma=3 phl=50)
-08:45:16.396 [VRB] [LINK] XPORT pkt=0d810efb (WHITELISTED) type=0 ctx=9 hops=0 recv=Interface[LocalTcpInterface] entry_recv=Interface[LocalTcpInterface] entry_out=Interface[BackboneInterface1] rem=2 taken=0 val=1
-08:45:16.398 [VRB] [LINK] FWD dst=0d810efb (WHITELISTED) to=Interface[BackboneInterface1] size=99
-08:45:16.402 [VRB] [HEAP-TEL] inbound: -2640 bytes (heap=175480 pin=96 bma=3 phl=51 lt=1 revr=0)
-08:45:16.576 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=131 type=0 ctx=10 hdr=0 dstt=3 hops=2 dst=0d810efb ref=0d810efb (WHITELISTED) tid=none
-08:45:16.577 [VRB] [HEAP-TEL] boundary: -736 bytes (bma=3 phl=51)
-08:45:16.578 [VRB] [LINK] XPORT pkt=0d810efb (WHITELISTED) type=0 ctx=10 hops=2 recv=Interface[BackboneInterface1] entry_recv=Interface[LocalTcpInterface] entry_out=Interface[BackboneInterface1] rem=2 taken=0 val=1
-08:45:16.580 [VRB] [LINK] FWD dst=0d810efb (WHITELISTED) to=Interface[LocalTcpInterface] size=131
-08:45:16.584 [VRB] [HEAP-TEL] inbound: -2716 bytes (heap=178384 pin=97 bma=3 phl=52 lt=1 revr=0)
-08:45:16.598 [VRB] [PKT] IN iface=Interface[LocalTcpInterface] sz=147 type=0 ctx=9 hdr=0 dstt=3 hops=1 dst=0d810efb ref=0d810efb (WHITELISTED) tid=none
-08:45:16.599 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=3 phl=52)
-08:45:16.600 [VRB] [LINK] XPORT pkt=0d810efb (WHITELISTED) type=0 ctx=9 hops=0 recv=Interface[LocalTcpInterface] entry_recv=Interface[LocalTcpInterface] entry_out=Interface[BackboneInterface1] rem=2 taken=0 val=1
-08:45:16.602 [VRB] [LINK] FWD dst=0d810efb (WHITELISTED) to=Interface[BackboneInterface1] size=147
-08:45:16.606 [VRB] [HEAP-TEL] inbound: -2744 bytes (heap=178176 pin=98 bma=3 phl=53 lt=1 revr=0)
-08:45:16.771 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=371 type=0 ctx=10 hdr=0 dstt=3 hops=2 dst=0d810efb ref=0d810efb (WHITELISTED) tid=none
-08:45:16.772 [VRB] [HEAP-TEL] boundary: -992 bytes (bma=3 phl=53)
-08:45:16.774 [VRB] [LINK] XPORT pkt=0d810efb (WHITELISTED) type=0 ctx=10 hops=2 recv=Interface[BackboneInterface1] entry_recv=Interface[LocalTcpInterface] entry_out=Interface[BackboneInterface1] rem=2 taken=0 val=1
-08:45:16.776 [VRB] [LINK] FWD dst=0d810efb (WHITELISTED) to=Interface[LocalTcpInterface] size=371
-08:45:16.781 [VRB] [HEAP-TEL] inbound: -3212 bytes (heap=177588 pin=99 bma=3 phl=54 lt=1 revr=0)
-08:45:16.991 [VRB] [PKT] IN iface=Interface[LocalTcpInterface] sz=147 type=0 ctx=9 hdr=0 dstt=3 hops=1 dst=0d810efb ref=0d810efb (WHITELISTED) tid=none
-08:45:16.992 [VRB] [HEAP-TEL] boundary: -740 bytes (bma=3 phl=54)
-08:45:16.993 [VRB] [LINK] XPORT pkt=0d810efb (WHITELISTED) type=0 ctx=9 hops=0 recv=Interface[LocalTcpInterface] entry_recv=Interface[LocalTcpInterface] entry_out=Interface[BackboneInterface1] rem=2 taken=0 val=1
-08:45:16.995 [VRB] [LINK] FWD dst=0d810efb (WHITELISTED) to=Interface[BackboneInterface1] size=147
-08:45:16.999 [VRB] [HEAP-TEL] inbound: -2372 bytes (heap=178216 pin=100 bma=3 phl=55 lt=1 revr=0)
-08:45:17.070 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=fd78b358 (WHITELISTED) tid=none
-08:45:17.071 [VRB] [HEAP-TEL] boundary: -800 bytes (bma=3 phl=55)
-08:45:17.073 [VRB] [PATH] REQ dst=fd78b358 (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:45:17.075 [VRB] [HEAP-TEL] inbound: -1004 bytes (heap=177912 pin=101 bma=3 phl=56 lt=1 revr=0)
-08:45:17.164 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=99 type=0 ctx=10 hdr=0 dstt=3 hops=2 dst=0d810efb ref=0d810efb (WHITELISTED) tid=none
-08:45:17.165 [VRB] [HEAP-TEL] boundary: -696 bytes (bma=3 phl=56)
-08:45:17.167 [VRB] [LINK] XPORT pkt=0d810efb (WHITELISTED) type=0 ctx=10 hops=2 recv=Interface[BackboneInterface1] entry_recv=Interface[LocalTcpInterface] entry_out=Interface[BackboneInterface1] rem=2 taken=0 val=1
-08:45:17.168 [VRB] [LINK] FWD dst=0d810efb (WHITELISTED) to=Interface[LocalTcpInterface] size=99
-08:45:17.173 [VRB] [HEAP-TEL] inbound: -2636 bytes (heap=177480 pin=102 bma=3 phl=57 lt=1 revr=0)
-08:45:17.179 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=207 type=1 ctx=0 hdr=1 dstt=0 hops=3 dst=a21f84a2 ref=a21f84a2 (BLACKLISTED) tid=5a94e5d8
-08:45:17.181 [VRB] [PKT] DROP boundary dst=a21f84a2 ref=a21f84a2 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:45:17.382 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=297 type=1 ctx=0 hdr=1 dstt=0 hops=2 dst=f34e5baf ref=f34e5baf (BLACKLISTED) tid=682e34ed
-08:45:17.383 [VRB] [PKT] DROP boundary dst=f34e5baf ref=f34e5baf (BLACKLISTED) type=1 ctx=0 hdr=1
-08:45:18.201 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=297 type=1 ctx=0 hdr=1 dstt=0 hops=4 dst=f34e5baf ref=f34e5baf (BLACKLISTED) tid=5a94e5d8
-08:45:18.203 [VRB] [PKT] DROP boundary dst=f34e5baf ref=f34e5baf (BLACKLISTED) type=1 ctx=0 hdr=1
-08:45:18.372 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=200 type=1 ctx=0 hdr=1 dstt=0 hops=3 dst=b000ab4b ref=b000ab4b (BLACKLISTED) tid=682e34ed
-08:45:18.374 [VRB] [PKT] DROP boundary dst=b000ab4b ref=b000ab4b (BLACKLISTED) type=1 ctx=0 hdr=1
-08:45:18.508 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=0497704b (WHITELISTED) tid=none
-08:45:18.510 [VRB] [HEAP-TEL] boundary: -552 bytes (bma=3 phl=57)
-08:45:18.512 [VRB] [PATH] REQ dst=0497704b (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:45:18.514 [VRB] [HEAP-TEL] inbound: -756 bytes (heap=179016 pin=107 bma=3 phl=58 lt=1 revr=0)
-08:45:18.518 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=bdd0b0f2 (WHITELISTED) tid=none
-08:45:18.519 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=3 phl=58)
-08:45:18.521 [VRB] [PATH] REQ dst=bdd0b0f2 (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:45:18.523 [VRB] [HEAP-TEL] inbound: -964 bytes (heap=178748 pin=108 bma=3 phl=59 lt=1 revr=0)
-08:45:18.525 [VRB] [HEAP-TEL] jobs: 472 bytes (heap=180276)
-08:45:20.755 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=995cc385 (WHITELISTED) tid=none
-08:45:20.757 [VRB] [HEAP-TEL] boundary: -776 bytes (bma=3 phl=59)
-08:45:20.759 [VRB] [PATH] REQ dst=995cc385 (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:45:20.761 [VRB] [HEAP-TEL] inbound: -984 bytes (heap=179148 pin=109 bma=3 phl=60 lt=1 revr=0)
-08:45:20.798 [VRB] [HEAP-TEL] jobs: 164 bytes (heap=180096)
-08:45:22.527 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=208 type=1 ctx=0 hdr=1 dstt=0 hops=3 dst=ba5d70d1 ref=ba5d70d1 (BLACKLISTED) tid=5a94e5d8
-08:45:22.529 [VRB] [PKT] DROP boundary dst=ba5d70d1 ref=ba5d70d1 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:45:22.566 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=200 type=1 ctx=0 hdr=1 dstt=0 hops=3 dst=b2c4e4c5 ref=b2c4e4c5 (BLACKLISTED) tid=682e34ed
-08:45:22.568 [VRB] [PKT] DROP boundary dst=b2c4e4c5 ref=b2c4e4c5 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:45:22.601 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=208 type=1 ctx=0 hdr=1 dstt=0 hops=3 dst=ba5d70d1 ref=ba5d70d1 (BLACKLISTED) tid=682e34ed
-08:45:22.602 [VRB] [PKT] DROP boundary dst=ba5d70d1 ref=ba5d70d1 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:45:23.522 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=183 type=1 ctx=0 hdr=1 dstt=0 hops=4 dst=393fa5f4 ref=393fa5f4 (BLACKLISTED) tid=5a94e5d8
-08:45:23.524 [VRB] [PKT] DROP boundary dst=393fa5f4 ref=393fa5f4 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:45:23.831 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=183 type=1 ctx=0 hdr=1 dstt=0 hops=4 dst=393fa5f4 ref=393fa5f4 (BLACKLISTED) tid=682e34ed
-08:45:23.833 [VRB] [PKT] DROP boundary dst=393fa5f4 ref=393fa5f4 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:45:25.057 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=0831be87 (WHITELISTED) tid=none
-08:45:25.058 [VRB] [HEAP-TEL] boundary: -748 bytes (bma=3 phl=60)
-08:45:25.060 [VRB] [PATH] REQ dst=0831be87 (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:45:25.062 [VRB] [HEAP-TEL] inbound: -952 bytes (heap=178724 pin=115 bma=3 phl=61 lt=1 revr=0)
-08:45:25.189 [VRB] [HEAP-TEL] jobs: 156 bytes (heap=179940)
-08:45:25.468 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=2d9fac5b (WHITELISTED) tid=none
-08:45:25.469 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=3 phl=61)
-08:45:25.471 [VRB] [PATH] REQ dst=2d9fac5b (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:45:25.473 [VRB] [HEAP-TEL] inbound: -964 bytes (heap=178832 pin=116 bma=3 phl=62 lt=1 revr=0)
-08:45:25.705 [VRB] [HEAP-TEL] jobs: 156 bytes (heap=179772)
-08:45:25.805 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=238 type=1 ctx=0 hdr=1 dstt=0 hops=4 dst=83ad2cf2 ref=83ad2cf2 (BLACKLISTED) tid=5a94e5d8
-08:45:25.806 [VRB] [PKT] DROP boundary dst=83ad2cf2 ref=83ad2cf2 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:45:26.084 [VRB] [PKT] IN iface=Interface[LocalTcpInterface] sz=227 type=0 ctx=0 hdr=1 dstt=0 hops=1 dst=7509e054 ref=7509e054 (WHITELISTED) tid=7e9c03b9
-08:45:26.085 [VRB] [HEAP-TEL] boundary: -952 bytes (bma=4 phl=62)
-08:45:26.088 [VRB] [LoRa] TX 67 bytes
-08:45:26.095 [VRB] [HEAP-TEL] inbound: -4932 bytes (heap=174536 pin=118 bma=4 phl=64 lt=1 revr=0)
-08:45:26.318 [VRB] [LoRa] TXSTART 67 bytes
-[Boundary] TXCFG f=914875000 sf=10 bw=4 cr=1 ldro=0 pre=18 hdr=0 len=68 crc=1 iq=0 txp=19
-[Boundary] TXDONE irq=0001 timeout=0 pa=1
-08:45:27.184 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=231 type=1 ctx=11 hdr=1 dstt=0 hops=2 dst=7509e054 ref=7509e054 (WHITELISTED) tid=682e34ed
-08:45:27.186 [VRB] [HEAP-TEL] boundary: -900 bytes (bma=4 phl=64)
-08:45:27.201 [VRB] [ANNC] IN dst=7509e054 (WHITELISTED) valid=1 ctx=11 hops=2 iface=Interface[BackboneInterface1] data=196
-08:45:27.211 [VRB] [PATH] STORED dst=7509e054 (WHITELISTED) hops=2 iface=Interface[BackboneInterface1] paths=2 bla=0
-08:45:27.212 [VRB] [HEAP-TEL] inbound: -4380 bytes (heap=174252 pin=119 bma=4 phl=66 lt=1 revr=0)
-08:45:27.219 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=231 type=1 ctx=11 hdr=1 dstt=0 hops=2 dst=7509e054 ref=7509e054 (WHITELISTED) tid=5a94e5d8
-08:45:27.220 [VRB] [HEAP-TEL] boundary: -900 bytes (bma=4 phl=66)
-08:45:27.235 [VRB] [ANNC] IN dst=7509e054 (WHITELISTED) valid=1 ctx=11 hops=2 iface=Interface[BackboneInterface3] data=196
-08:45:27.247 [VRB] [PKT] IN iface=Interface[LocalTcpInterface] sz=227 type=0 ctx=0 hdr=1 dstt=0 hops=1 dst=7509e054 ref=7509e054 (WHITELISTED) tid=7e9c03b9
-08:45:27.248 [VRB] [HEAP-TEL] boundary: -916 bytes (bma=4 phl=66)
-08:45:27.253 [VRB] [HEAP-TEL] inbound: -3172 bytes (heap=173452 pin=121 bma=4 phl=67 lt=1 revr=1)
-08:45:27.719 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=83 type=3 ctx=0 hdr=0 dstt=0 hops=2 dst=a2d2af6b ref=a2d2af6b (BLACKLISTED) tid=none
-08:45:27.721 [VRB] [HEAP-TEL] boundary: -460 bytes (bma=4 phl=67)
-08:45:27.722 [VRB] [PROOF] XPORT dst=a2d2af6b (BLACKLISTED) data=64 hops=2 recv=Interface[BackboneInterface1] out=Interface[LocalTcpInterface]
-08:45:27.727 [VRB] [HEAP-TEL] inbound: -2388 bytes (heap=173792 pin=122 bma=4 phl=68 lt=1 revr=1)
-08:45:29.684 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=a3dfea28 (WHITELISTED) tid=none
-08:45:29.685 [VRB] [HEAP-TEL] boundary: -748 bytes (bma=4 phl=68)
-08:45:29.687 [VRB] [PATH] REQ dst=a3dfea28 (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:45:29.689 [VRB] [HEAP-TEL] inbound: -964 bytes (heap=175280 pin=123 bma=4 phl=69 lt=1 revr=1)
-08:45:29.693 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=af959c4c (WHITELISTED) tid=none
-08:45:29.694 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=4 phl=69)
-08:45:29.696 [VRB] [PATH] REQ dst=af959c4c (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:45:29.698 [VRB] [HEAP-TEL] inbound: -960 bytes (heap=174968 pin=124 bma=4 phl=70 lt=1 revr=1)
-08:45:29.764 [VRB] [HEAP-TEL] jobs: 312 bytes (heap=176360)
-08:45:30.388 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=91c726ca (WHITELISTED) tid=none
-08:45:30.390 [VRB] [HEAP-TEL] boundary: -788 bytes (bma=4 phl=70)
-08:45:30.392 [VRB] [PATH] REQ dst=91c726ca (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:45:30.394 [VRB] [HEAP-TEL] inbound: -992 bytes (heap=174924 pin=125 bma=4 phl=71 lt=1 revr=1)
-08:45:30.403 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=91c726ca (WHITELISTED) tid=none
-08:45:30.405 [VRB] [HEAP-TEL] boundary: -772 bytes (bma=4 phl=71)
-08:45:30.407 [VRB] [PATH] REQ dst=91c726ca (WHITELISTED) from=Interface[BackboneInterface3] local=0 sz=48
-08:45:30.408 [VRB] [HEAP-TEL] inbound: -820 bytes (heap=175072 pin=126 bma=4 phl=72 lt=1 revr=1)
-08:45:30.531 [VRB] [HEAP-TEL] jobs: 156 bytes (heap=176024)
-08:45:31.510 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=ddafac3e (WHITELISTED) tid=none
-08:45:31.511 [VRB] [HEAP-TEL] boundary: -828 bytes (bma=4 phl=72)
-08:45:31.513 [VRB] [PATH] REQ dst=ddafac3e (WHITELISTED) from=Interface[BackboneInterface3] local=0 sz=48
-08:45:31.515 [VRB] [HEAP-TEL] inbound: -1032 bytes (heap=174560 pin=127 bma=4 phl=73 lt=1 revr=1)
-08:45:31.519 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=1db02860 (WHITELISTED) tid=none
-08:45:31.521 [VRB] [HEAP-TEL] boundary: -788 bytes (bma=4 phl=73)
-08:45:31.523 [VRB] [PATH] REQ dst=1db02860 (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:45:31.525 [VRB] [HEAP-TEL] inbound: -992 bytes (heap=174564 pin=128 bma=4 phl=74 lt=1 revr=1)
-08:45:31.566 [VRB] [HEAP-TEL] jobs: 312 bytes (heap=175688)
-08:45:31.935 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=246 type=1 ctx=0 hdr=1 dstt=0 hops=5 dst=1b5ebb1b ref=1b5ebb1b (BLACKLISTED) tid=682e34ed
-08:45:31.936 [VRB] [PKT] DROP boundary dst=1b5ebb1b ref=1b5ebb1b (BLACKLISTED) type=1 ctx=0 hdr=1
-08:45:32.061 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=6cfaf40e (WHITELISTED) tid=none
-08:45:32.063 [VRB] [HEAP-TEL] boundary: -560 bytes (bma=4 phl=74)
-08:45:32.066 [VRB] [PATH] REQ dst=6cfaf40e (WHITELISTED) from=Interface[BackboneInterface3] local=0 sz=48
-08:45:32.068 [VRB] [HEAP-TEL] inbound: -776 bytes (heap=174264 pin=130 bma=4 phl=75 lt=1 revr=1)
-08:45:32.083 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=246 type=1 ctx=0 hdr=1 dstt=0 hops=4 dst=1b5ebb1b ref=1b5ebb1b (BLACKLISTED) tid=5a94e5d8
-08:45:32.085 [VRB] [PKT] DROP boundary dst=1b5ebb1b ref=1b5ebb1b (BLACKLISTED) type=1 ctx=0 hdr=1
-08:45:32.738 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=9442d370 (WHITELISTED) tid=none
-08:45:32.739 [VRB] [HEAP-TEL] boundary: -776 bytes (bma=4 phl=75)
-08:45:32.741 [VRB] [PATH] REQ dst=9442d370 (WHITELISTED) from=Interface[BackboneInterface3] local=0 sz=48
-08:45:32.743 [VRB] [HEAP-TEL] inbound: -980 bytes (heap=173924 pin=132 bma=4 phl=76 lt=1 revr=1)
-08:45:32.873 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=248 type=1 ctx=0 hdr=1 dstt=0 hops=2 dst=162aea31 ref=162aea31 (BLACKLISTED) tid=682e34ed
-08:45:32.874 [VRB] [PKT] DROP boundary dst=162aea31 ref=162aea31 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:45:32.880 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=183 type=1 ctx=0 hdr=1 dstt=0 hops=2 dst=02220510 ref=02220510 (BLACKLISTED) tid=682e34ed
-08:45:32.881 [VRB] [PKT] DROP boundary dst=02220510 ref=02220510 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:45:33.353 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=13f4b14d (WHITELISTED) tid=none
-08:45:33.354 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=4 phl=76)
-08:45:33.356 [VRB] [PATH] REQ dst=13f4b14d (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:45:33.358 [VRB] [HEAP-TEL] inbound: -968 bytes (heap=173916 pin=135 bma=4 phl=77 lt=1 revr=1)
-08:45:33.391 [VRB] [HEAP-TEL] jobs: 468 bytes (heap=175172)
-08:45:34.898 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=1a63d1c2 (WHITELISTED) tid=none
-08:45:34.899 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=4 phl=77)
-08:45:34.901 [VRB] [PATH] REQ dst=1a63d1c2 (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:45:34.903 [VRB] [HEAP-TEL] inbound: -956 bytes (heap=173800 pin=136 bma=4 phl=78 lt=1 revr=1)
-08:45:34.942 [VRB] [HEAP-TEL] jobs: 156 bytes (heap=175012)
-08:45:36.427 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=194 type=1 ctx=0 hdr=1 dstt=0 hops=2 dst=59af869e ref=59af869e (BLACKLISTED) tid=5a94e5d8
-08:45:36.429 [VRB] [PKT] DROP boundary dst=59af869e ref=59af869e (BLACKLISTED) type=1 ctx=0 hdr=1
-08:45:37.146 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=228 type=1 ctx=0 hdr=1 dstt=0 hops=2 dst=7c20bac2 ref=7c20bac2 (BLACKLISTED) tid=682e34ed
-08:45:37.148 [VRB] [PKT] DROP boundary dst=7c20bac2 ref=7c20bac2 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:45:37.154 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=194 type=1 ctx=0 hdr=1 dstt=0 hops=4 dst=59af869e ref=59af869e (BLACKLISTED) tid=682e34ed
-08:45:37.155 [VRB] [PKT] DROP boundary dst=59af869e ref=59af869e (BLACKLISTED) type=1 ctx=0 hdr=1
-08:45:37.450 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=228 type=1 ctx=0 hdr=1 dstt=0 hops=4 dst=7c20bac2 ref=7c20bac2 (BLACKLISTED) tid=5a94e5d8
-08:45:37.451 [VRB] [PKT] DROP boundary dst=7c20bac2 ref=7c20bac2 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:45:38.779 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=826399ff (WHITELISTED) tid=none
-08:45:38.780 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=4 phl=78)
-08:45:38.782 [VRB] [PATH] REQ dst=826399ff (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:45:38.784 [VRB] [HEAP-TEL] inbound: -968 bytes (heap=173616 pin=141 bma=4 phl=79 lt=1 revr=1)
-08:45:38.817 [VRB] [HEAP-TEL] jobs: 156 bytes (heap=174632)
-08:45:39.507 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=231 type=1 ctx=0 hdr=1 dstt=0 hops=2 dst=7509e054 ref=7509e054 (WHITELISTED) tid=5a94e5d8
-08:45:39.509 [VRB] [HEAP-TEL] boundary: -904 bytes (bma=4 phl=79)
-08:45:39.524 [VRB] [ANNC] IN dst=7509e054 (WHITELISTED) valid=1 ctx=0 hops=2 iface=Interface[BackboneInterface3] data=196
-08:45:39.532 [VRB] [PATH] STORED dst=7509e054 (WHITELISTED) hops=2 iface=Interface[BackboneInterface3] paths=2 bla=0
-08:45:39.534 [VRB] [HEAP-TEL] inbound: -2852 bytes (heap=171396 pin=142 bma=4 phl=80 lt=1 revr=1)
-08:45:41.346 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=330 type=1 ctx=0 hdr=1 dstt=0 hops=3 dst=50720346 ref=50720346 (BLACKLISTED) tid=682e34ed
-08:45:41.348 [VRB] [PKT] DROP boundary dst=50720346 ref=50720346 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:45:42.365 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=198 type=1 ctx=0 hdr=1 dstt=0 hops=2 dst=5cf0802d ref=5cf0802d (BLACKLISTED) tid=682e34ed
-08:45:42.366 [VRB] [PKT] DROP boundary dst=5cf0802d ref=5cf0802d (BLACKLISTED) type=1 ctx=0 hdr=1
-08:45:42.403 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=0497704b (WHITELISTED) tid=none
-08:45:42.405 [VRB] [HEAP-TEL] boundary: -556 bytes (bma=4 phl=80)
-08:45:42.407 [VRB] [PATH] REQ dst=0497704b (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:45:42.409 [VRB] [HEAP-TEL] inbound: -760 bytes (heap=172468 pin=145 bma=4 phl=81 lt=1 revr=1)
-08:45:42.436 [VRB] [HEAP-TEL] jobs: 156 bytes (heap=173704)
-08:45:42.464 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=995cc385 (WHITELISTED) tid=none
-08:45:42.465 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=4 phl=81)
-08:45:42.468 [VRB] [PATH] REQ dst=995cc385 (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:45:42.470 [VRB] [HEAP-TEL] inbound: -972 bytes (heap=172296 pin=146 bma=4 phl=82 lt=1 revr=1)
-08:45:42.568 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=bdd0b0f2 (WHITELISTED) tid=none
-08:45:42.570 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=4 phl=82)
-08:45:42.572 [VRB] [PATH] REQ dst=bdd0b0f2 (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:45:42.574 [VRB] [HEAP-TEL] inbound: -960 bytes (heap=171776 pin=147 bma=4 phl=83 lt=1 revr=1)
-08:45:42.675 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=198 type=1 ctx=0 hdr=1 dstt=0 hops=4 dst=5cf0802d ref=5cf0802d (BLACKLISTED) tid=5a94e5d8
-08:45:42.676 [VRB] [PKT] DROP boundary dst=5cf0802d ref=5cf0802d (BLACKLISTED) type=1 ctx=0 hdr=1
-08:45:42.773 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=0831be87 (WHITELISTED) tid=none
-08:45:42.775 [VRB] [HEAP-TEL] boundary: -772 bytes (bma=4 phl=83)
-08:45:42.777 [VRB] [PATH] REQ dst=0831be87 (WHITELISTED) from=Interface[BackboneInterface3] local=0 sz=48
-08:45:42.779 [VRB] [HEAP-TEL] inbound: -976 bytes (heap=171656 pin=149 bma=4 phl=84 lt=1 revr=1)
-08:45:42.961 [VRB] [HEAP-TEL] jobs: 468 bytes (heap=173224)
-08:45:44.437 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=233 type=1 ctx=0 hdr=1 dstt=0 hops=9 dst=1e96a12e ref=1e96a12e (BLACKLISTED) tid=682e34ed
-08:45:44.438 [VRB] [PKT] DROP boundary dst=1e96a12e ref=1e96a12e (BLACKLISTED) type=1 ctx=0 hdr=1
-08:45:44.519 [VRB] [PKT] IN iface=Interface[LocalTcpInterface] sz=209 type=1 ctx=0 hdr=0 dstt=0 hops=1 dst=13f4b14d ref=13f4b14d (BLACKLISTED) tid=none
-08:45:44.520 [VRB] [HEAP-TEL] boundary: -912 bytes (bma=5 phl=84)
-08:45:44.535 [VRB] [ANNC] IN dst=13f4b14d (WHITELISTED) valid=1 ctx=0 hops=0 iface=Interface[LocalTcpInterface] data=190
-08:45:44.539 [VRB] [PATH] STORED dst=13f4b14d (WHITELISTED) hops=0 iface=Interface[LocalTcpInterface] paths=3 bla=1
-08:45:44.541 [VRB] [HEAP-TEL] inbound: -2352 bytes (heap=170304 pin=151 bma=5 phl=85 lt=1 revr=1)
-08:45:44.778 [VRB] [HEAP-TEL] jobs: -1544 bytes (heap=169040)
-08:45:44.779 [VRB] [LoRa] TX 225 bytes
-08:45:44.984 [VRB] [LoRa] TXSTART 225 bytes
-[Boundary] TXCFG f=914875000 sf=10 bw=4 cr=1 ldro=0 pre=18 hdr=0 len=226 crc=1 iq=0 txp=19
-[Boundary] TXDONE irq=0001 timeout=0 pa=1
-08:45:47.166 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=225 type=1 ctx=0 hdr=1 dstt=0 hops=2 dst=13f4b14d ref=13f4b14d (WHITELISTED) tid=682e34ed
-08:45:47.167 [VRB] [HEAP-TEL] boundary: -888 bytes (bma=5 phl=85)
-08:45:47.182 [VRB] [ANNC] IN dst=13f4b14d (WHITELISTED) valid=1 ctx=0 hops=2 iface=Interface[BackboneInterface1] data=190
-08:45:47.184 [VRB] [HEAP-TEL] inbound: -540 bytes (heap=169048 pin=152 bma=5 phl=85 lt=1 revr=1)
-08:45:47.191 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=202 type=1 ctx=0 hdr=1 dstt=0 hops=3 dst=a0a0a61a ref=a0a0a61a (BLACKLISTED) tid=682e34ed
-08:45:47.192 [VRB] [PKT] DROP boundary dst=a0a0a61a ref=a0a0a61a (BLACKLISTED) type=1 ctx=0 hdr=1
-08:45:47.198 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=202 type=1 ctx=0 hdr=1 dstt=0 hops=4 dst=a0a0a61a ref=a0a0a61a (BLACKLISTED) tid=5a94e5d8
-08:45:47.200 [VRB] [PKT] DROP boundary dst=a0a0a61a ref=a0a0a61a (BLACKLISTED) type=1 ctx=0 hdr=1
-08:45:47.233 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=a3dfea28 (WHITELISTED) tid=none
-08:45:47.235 [VRB] [HEAP-TEL] boundary: -748 bytes (bma=5 phl=85)
-08:45:47.237 [VRB] [PATH] REQ dst=a3dfea28 (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:45:47.239 [VRB] [HEAP-TEL] inbound: -952 bytes (heap=169484 pin=155 bma=5 phl=86 lt=1 revr=1)
-08:45:47.386 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=46ecc4db (WHITELISTED) tid=none
-08:45:47.387 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=5 phl=86)
-08:45:47.389 [VRB] [PATH] REQ dst=46ecc4db (WHITELISTED) from=Interface[BackboneInterface3] local=0 sz=48
-08:45:47.391 [VRB] [HEAP-TEL] inbound: -960 bytes (heap=168888 pin=156 bma=5 phl=87 lt=1 revr=1)
-08:45:47.452 [VRB] [HEAP-TEL] jobs: 1044 bytes (heap=170996)
-08:45:47.904 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=315608f1 (WHITELISTED) tid=none
-08:45:47.905 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=5 phl=87)
-08:45:47.907 [VRB] [PATH] REQ dst=315608f1 (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:45:47.909 [VRB] [HEAP-TEL] inbound: -968 bytes (heap=169608 pin=157 bma=5 phl=88 lt=1 revr=1)
-08:45:47.955 [VRB] [HEAP-TEL] jobs: 156 bytes (heap=170688)
-08:45:48.098 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=7ad5739d (WHITELISTED) tid=none
-08:45:48.099 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=5 phl=88)
-08:45:48.101 [VRB] [PATH] REQ dst=7ad5739d (WHITELISTED) from=Interface[BackboneInterface3] local=0 sz=48
-08:45:48.103 [VRB] [HEAP-TEL] inbound: -960 bytes (heap=169448 pin=158 bma=5 phl=89 lt=1 revr=1)
-08:45:48.207 [VRB] [HEAP-TEL] jobs: 156 bytes (heap=170668)
-08:45:49.746 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=51eb4c57 (WHITELISTED) tid=none
-08:45:49.748 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=5 phl=89)
-08:45:49.750 [VRB] [PATH] REQ dst=51eb4c57 (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:45:49.752 [VRB] [HEAP-TEL] inbound: -960 bytes (heap=169288 pin=159 bma=5 phl=90 lt=1 revr=1)
-08:45:49.754 [VRB] [HEAP-TEL] jobs: 156 bytes (heap=170512)
-08:45:50.048 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=51eb4c57 (WHITELISTED) tid=none
-08:45:50.050 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=5 phl=90)
-08:45:50.052 [VRB] [PATH] REQ dst=51eb4c57 (WHITELISTED) from=Interface[BackboneInterface3] local=0 sz=48
-08:45:50.054 [VRB] [HEAP-TEL] inbound: -964 bytes (heap=169116 pin=160 bma=5 phl=91 lt=1 revr=1)
-08:45:50.261 [VRB] [HEAP-TEL] jobs: 156 bytes (heap=170352)
-08:45:50.658 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=439fe822 (WHITELISTED) tid=none
-08:45:50.660 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=5 phl=91)
-08:45:50.662 [VRB] [PATH] REQ dst=439fe822 (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:45:50.664 [VRB] [HEAP-TEL] inbound: -972 bytes (heap=169236 pin=161 bma=5 phl=92 lt=1 revr=1)
-08:45:50.778 [VRB] [HEAP-TEL] jobs: 156 bytes (heap=170180)
-08:45:51.476 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=3eaf86c8 (WHITELISTED) tid=none
-08:45:51.478 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=5 phl=92)
-08:45:51.480 [VRB] [PATH] REQ dst=3eaf86c8 (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:45:51.482 [VRB] [HEAP-TEL] inbound: -964 bytes (heap=169072 pin=162 bma=5 phl=93 lt=1 revr=1)
-08:45:51.546 [VRB] [HEAP-TEL] jobs: 156 bytes (heap=170012)
-08:45:52.954 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=edf1727f (WHITELISTED) tid=none
-08:45:52.955 [VRB] [HEAP-TEL] boundary: -748 bytes (bma=5 phl=93)
-08:45:52.957 [VRB] [PATH] REQ dst=edf1727f (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:45:52.959 [VRB] [HEAP-TEL] inbound: -952 bytes (heap=168592 pin=163 bma=5 phl=94 lt=1 revr=1)
-08:45:52.963 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=832b3b4c (WHITELISTED) tid=none
-08:45:52.964 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=5 phl=94)
-08:45:52.966 [VRB] [PATH] REQ dst=832b3b4c (WHITELISTED) from=Interface[BackboneInterface3] local=0 sz=48
-08:45:52.968 [VRB] [HEAP-TEL] inbound: -968 bytes (heap=168296 pin=164 bma=5 phl=95 lt=1 revr=1)
-08:45:53.099 [VRB] [HEAP-TEL] jobs: 312 bytes (heap=169696)
-08:45:53.223 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=a1f39935 (WHITELISTED) tid=none
-08:45:53.225 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=5 phl=95)
-08:45:53.227 [VRB] [PATH] REQ dst=a1f39935 (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:45:53.229 [VRB] [HEAP-TEL] inbound: -964 bytes (heap=168304 pin=165 bma=5 phl=96 lt=1 revr=1)
-08:45:53.367 [VRB] [HEAP-TEL] jobs: 156 bytes (heap=169528)
-08:45:55.091 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=93ef3fe6 (WHITELISTED) tid=none
-08:45:55.094 [VRB] [HEAP-TEL] boundary: -1048 bytes (bma=5 phl=96)
-08:45:55.095 [VRB] [PATH] REQ dst=93ef3fe6 (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:45:55.098 [VRB] [HEAP-TEL] inbound: -972 bytes (heap=168128 pin=166 bma=5 phl=97 lt=1 revr=1)
-08:45:55.167 [VRB] [HEAP-TEL] jobs: 156 bytes (heap=169352)
-08:45:55.879 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=af959c4c (WHITELISTED) tid=none
-08:45:55.880 [VRB] [HEAP-TEL] boundary: -768 bytes (bma=5 phl=97)
-08:45:55.882 [VRB] [PATH] REQ dst=af959c4c (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:45:55.884 [VRB] [HEAP-TEL] inbound: -976 bytes (heap=167960 pin=167 bma=5 phl=98 lt=1 revr=1)
-08:45:55.950 [VRB] [HEAP-TEL] jobs: 156 bytes (heap=169172)
-08:45:58.546 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=183 type=1 ctx=0 hdr=1 dstt=0 hops=5 dst=06f3deb7 ref=06f3deb7 (BLACKLISTED) tid=5a94e5d8
-08:45:58.548 [VRB] [PKT] DROP boundary dst=06f3deb7 ref=06f3deb7 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:45:59.164 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=183 type=1 ctx=0 hdr=1 dstt=0 hops=4 dst=06f3deb7 ref=06f3deb7 (BLACKLISTED) tid=682e34ed
-08:45:59.165 [VRB] [PKT] DROP boundary dst=06f3deb7 ref=06f3deb7 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:45:59.173 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=326 type=1 ctx=0 hdr=1 dstt=0 hops=4 dst=2c6ccd83 ref=2c6ccd83 (BLACKLISTED) tid=682e34ed
-08:45:59.174 [VRB] [PKT] DROP boundary dst=2c6ccd83 ref=2c6ccd83 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:45:59.181 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=225 type=1 ctx=0 hdr=1 dstt=0 hops=4 dst=b00564d9 ref=b00564d9 (BLACKLISTED) tid=682e34ed
-08:45:59.182 [VRB] [PKT] DROP boundary dst=b00564d9 ref=b00564d9 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:45:59.576 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=225 type=1 ctx=0 hdr=1 dstt=0 hops=3 dst=b00564d9 ref=b00564d9 (BLACKLISTED) tid=5a94e5d8
-08:45:59.578 [VRB] [PKT] DROP boundary dst=b00564d9 ref=b00564d9 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:46:00.091 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=285a9ce3 (WHITELISTED) tid=none
-08:46:00.093 [VRB] [HEAP-TEL] boundary: -772 bytes (bma=5 phl=98)
-08:46:00.095 [VRB] [PATH] REQ dst=285a9ce3 (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:46:00.097 [VRB] [HEAP-TEL] inbound: -976 bytes (heap=167560 pin=173 bma=5 phl=99 lt=1 revr=1)
-08:46:00.099 [VRB] [HEAP-TEL] jobs: 188 bytes (heap=168816)
-08:46:02.438 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=208 type=1 ctx=0 hdr=1 dstt=0 hops=2 dst=0ffbe281 ref=0ffbe281 (BLACKLISTED) tid=682e34ed
-08:46:02.440 [VRB] [PKT] DROP boundary dst=0ffbe281 ref=0ffbe281 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:46:03.767 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=208 type=1 ctx=0 hdr=1 dstt=0 hops=4 dst=0ffbe281 ref=0ffbe281 (BLACKLISTED) tid=5a94e5d8
-08:46:03.768 [VRB] [PKT] DROP boundary dst=0ffbe281 ref=0ffbe281 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:46:04.482 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=f3f80c2f (WHITELISTED) tid=none
-08:46:04.484 [VRB] [HEAP-TEL] boundary: -808 bytes (bma=5 phl=99)
-08:46:04.486 [VRB] [PATH] REQ dst=f3f80c2f (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:46:04.488 [VRB] [HEAP-TEL] inbound: -1024 bytes (heap=167156 pin=176 bma=5 phl=100 lt=1 revr=1)
-08:46:04.494 [VRB] [PKT] IN iface=Interface[LocalTcpInterface] sz=198 type=1 ctx=0 hdr=0 dstt=0 hops=1 dst=3c1f60d2 ref=3c1f60d2 (BLACKLISTED) tid=none
-08:46:04.496 [VRB] [HEAP-TEL] boundary: -892 bytes (bma=6 phl=100)
-08:46:04.588 [VRB] [ANNC] IN dst=3c1f60d2 (WHITELISTED) valid=1 ctx=0 hops=0 iface=Interface[LocalTcpInterface] data=179
-08:46:04.592 [VRB] [PATH] STORED dst=3c1f60d2 (WHITELISTED) hops=0 iface=Interface[LocalTcpInterface] paths=4 bla=2
-08:46:04.594 [VRB] [HEAP-TEL] inbound: -2156 bytes (heap=165560 pin=177 bma=6 phl=100 lt=1 revr=1)
-08:46:04.727 [VRB] [HEAP-TEL] jobs: -1376 bytes (heap=164184)
-08:46:04.729 [VRB] [LoRa] TX 214 bytes
-08:46:04.742 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=1db02860 (WHITELISTED) tid=none
-08:46:04.743 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=6 phl=100)
-08:46:04.745 [VRB] [PATH] REQ dst=1db02860 (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:46:04.747 [VRB] [HEAP-TEL] inbound: -792 bytes (heap=161608 pin=178 bma=6 phl=100 lt=1 revr=1)
-08:46:04.971 [VRB] [LoRa] TXSTART 214 bytes
-[Boundary] TXCFG f=914875000 sf=10 bw=4 cr=1 ldro=0 pre=18 hdr=0 len=215 crc=1 iq=0 txp=19
-[Boundary] TXDONE irq=0001 timeout=0 pa=1
-08:46:07.070 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=214 type=1 ctx=0 hdr=1 dstt=0 hops=2 dst=3c1f60d2 ref=3c1f60d2 (WHITELISTED) tid=682e34ed
-08:46:07.072 [VRB] [HEAP-TEL] boundary: -904 bytes (bma=6 phl=100)
-08:46:07.164 [VRB] [ANNC] IN dst=3c1f60d2 (WHITELISTED) valid=1 ctx=0 hops=2 iface=Interface[BackboneInterface1] data=179
-08:46:07.165 [VRB] [HEAP-TEL] inbound: -904 bytes (heap=163936 pin=179 bma=6 phl=100 lt=1 revr=1)
-08:46:07.172 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=202 type=1 ctx=0 hdr=1 dstt=0 hops=3 dst=3c1fc58a ref=3c1fc58a (BLACKLISTED) tid=682e34ed
-08:46:07.173 [VRB] [PKT] DROP boundary dst=3c1fc58a ref=3c1fc58a (BLACKLISTED) type=1 ctx=0 hdr=1
-08:46:07.179 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=183 type=1 ctx=0 hdr=1 dstt=0 hops=3 dst=800b4053 ref=800b4053 (BLACKLISTED) tid=682e34ed
-08:46:07.180 [VRB] [PKT] DROP boundary dst=800b4053 ref=800b4053 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:46:07.186 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=183 type=1 ctx=0 hdr=1 dstt=0 hops=3 dst=f63454d6 ref=f63454d6 (BLACKLISTED) tid=682e34ed
-08:46:07.187 [VRB] [PKT] DROP boundary dst=f63454d6 ref=f63454d6 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:46:07.192 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=183 type=1 ctx=0 hdr=1 dstt=0 hops=3 dst=437538e6 ref=437538e6 (BLACKLISTED) tid=682e34ed
-08:46:07.194 [VRB] [PKT] DROP boundary dst=437538e6 ref=437538e6 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:46:07.202 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=202 type=1 ctx=0 hdr=1 dstt=0 hops=3 dst=3c1fc58a ref=3c1fc58a (BLACKLISTED) tid=5a94e5d8
-08:46:07.203 [VRB] [PKT] DROP boundary dst=3c1fc58a ref=3c1fc58a (BLACKLISTED) type=1 ctx=0 hdr=1
-08:46:07.209 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=183 type=1 ctx=0 hdr=1 dstt=0 hops=3 dst=437538e6 ref=437538e6 (BLACKLISTED) tid=5a94e5d8
-08:46:07.210 [VRB] [PKT] DROP boundary dst=437538e6 ref=437538e6 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:46:07.216 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=183 type=1 ctx=0 hdr=1 dstt=0 hops=3 dst=800b4053 ref=800b4053 (BLACKLISTED) tid=5a94e5d8
-08:46:07.217 [VRB] [PKT] DROP boundary dst=800b4053 ref=800b4053 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:46:07.223 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=183 type=1 ctx=0 hdr=1 dstt=0 hops=3 dst=f63454d6 ref=f63454d6 (BLACKLISTED) tid=5a94e5d8
-08:46:07.224 [VRB] [PKT] DROP boundary dst=f63454d6 ref=f63454d6 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:46:08.480 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=0ada22bd (WHITELISTED) tid=none
-08:46:08.482 [VRB] [HEAP-TEL] boundary: -780 bytes (bma=6 phl=100)
-08:46:08.484 [VRB] [PATH] REQ dst=0ada22bd (WHITELISTED) from=Interface[BackboneInterface3] local=0 sz=48
-08:46:08.486 [VRB] [HEAP-TEL] inbound: -820 bytes (heap=164352 pin=188 bma=6 phl=100 lt=1 revr=1)
-08:46:08.488 [VRB] [HEAP-TEL] jobs: 1036 bytes (heap=166464)
-08:46:09.710 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=323 type=1 ctx=0 hdr=1 dstt=0 hops=4 dst=d4b95fc3 ref=d4b95fc3 (BLACKLISTED) tid=682e34ed
-08:46:09.712 [VRB] [PKT] DROP boundary dst=d4b95fc3 ref=d4b95fc3 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:46:10.120 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=323 type=1 ctx=0 hdr=1 dstt=0 hops=6 dst=d4b95fc3 ref=d4b95fc3 (BLACKLISTED) tid=5a94e5d8
-08:46:10.121 [VRB] [PKT] DROP boundary dst=d4b95fc3 ref=d4b95fc3 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:46:11.141 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=228 type=1 ctx=0 hdr=1 dstt=0 hops=4 dst=de509fe1 ref=de509fe1 (BLACKLISTED) tid=682e34ed
-08:46:11.142 [VRB] [PKT] DROP boundary dst=de509fe1 ref=de509fe1 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:46:12.086 [VRB] [PKT] IN iface=Interface[LocalTcpInterface] sz=227 type=0 ctx=0 hdr=1 dstt=0 hops=1 dst=7509e054 ref=7509e054 (WHITELISTED) tid=7e9c03b9
-08:46:12.088 [VRB] [HEAP-TEL] boundary: -912 bytes (bma=6 phl=100)
-08:46:12.094 [VRB] [HEAP-TEL] inbound: -2992 bytes (heap=162560 pin=192 bma=6 phl=100 lt=1 revr=2)
-08:46:12.098 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=1a63d1c2 (WHITELISTED) tid=none
-08:46:12.100 [VRB] [HEAP-TEL] boundary: -576 bytes (bma=6 phl=100)
-08:46:12.102 [VRB] [PATH] REQ dst=1a63d1c2 (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:46:12.104 [VRB] [HEAP-TEL] inbound: -632 bytes (heap=162988 pin=193 bma=6 phl=100 lt=1 revr=2)
-08:46:12.109 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=8bb35bb9 (WHITELISTED) tid=none
-08:46:12.110 [VRB] [HEAP-TEL] boundary: -772 bytes (bma=6 phl=100)
-08:46:12.112 [VRB] [PATH] REQ dst=8bb35bb9 (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:46:12.114 [VRB] [HEAP-TEL] inbound: -892 bytes (heap=163200 pin=194 bma=6 phl=100 lt=1 revr=2)
-08:46:12.123 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=237 type=1 ctx=0 hdr=1 dstt=0 hops=5 dst=7c41c793 ref=7c41c793 (BLACKLISTED) tid=5a94e5d8
-08:46:12.124 [VRB] [PKT] DROP boundary dst=7c41c793 ref=7c41c793 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:46:12.160 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=83 type=3 ctx=0 hdr=0 dstt=0 hops=2 dst=4ba41d93 ref=4ba41d93 (BLACKLISTED) tid=none
-08:46:12.162 [VRB] [HEAP-TEL] boundary: -672 bytes (bma=6 phl=100)
-08:46:12.164 [VRB] [PROOF] XPORT dst=4ba41d93 (BLACKLISTED) data=64 hops=2 recv=Interface[BackboneInterface3] out=Interface[LocalTcpInterface]
-08:46:12.168 [VRB] [HEAP-TEL] inbound: -2436 bytes (heap=163368 pin=196 bma=6 phl=100 lt=1 revr=2)
-08:46:12.380 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=315608f1 (WHITELISTED) tid=none
-08:46:12.381 [VRB] [HEAP-TEL] boundary: -776 bytes (bma=6 phl=100)
-08:46:12.383 [VRB] [PATH] REQ dst=315608f1 (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:46:12.385 [VRB] [HEAP-TEL] inbound: -620 bytes (heap=164708 pin=197 bma=6 phl=100 lt=1 revr=2)
-08:46:12.391 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=237 type=1 ctx=0 hdr=1 dstt=0 hops=4 dst=7c41c793 ref=7c41c793 (BLACKLISTED) tid=682e34ed
-08:46:12.393 [VRB] [PKT] DROP boundary dst=7c41c793 ref=7c41c793 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:46:12.984 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=a1f39935 (WHITELISTED) tid=none
-08:46:12.985 [VRB] [HEAP-TEL] boundary: -768 bytes (bma=6 phl=100)
-08:46:12.987 [VRB] [PATH] REQ dst=a1f39935 (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:46:12.989 [VRB] [HEAP-TEL] inbound: -808 bytes (heap=164536 pin=199 bma=6 phl=100 lt=1 revr=2)
-08:46:13.006 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=edf1727f (WHITELISTED) tid=none
-08:46:13.007 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=6 phl=100)
-08:46:13.010 [VRB] [PATH] REQ dst=edf1727f (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:46:13.012 [VRB] [HEAP-TEL] inbound: -592 bytes (heap=164392 pin=200 bma=6 phl=100 lt=1 revr=2)
-08:46:13.148 [VRB] [HEAP-TEL] jobs: 792 bytes (heap=166276)
-08:46:13.600 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=183 type=1 ctx=0 hdr=1 dstt=0 hops=3 dst=295b4c2d ref=295b4c2d (BLACKLISTED) tid=682e34ed
-08:46:13.602 [VRB] [PKT] DROP boundary dst=295b4c2d ref=295b4c2d (BLACKLISTED) type=1 ctx=0 hdr=1
-08:46:13.610 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=225 type=1 ctx=0 hdr=1 dstt=0 hops=2 dst=a66f6f44 ref=a66f6f44 (BLACKLISTED) tid=5a94e5d8
-08:46:13.611 [VRB] [PKT] DROP boundary dst=a66f6f44 ref=a66f6f44 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:46:13.617 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=183 type=1 ctx=0 hdr=1 dstt=0 hops=2 dst=e5e7b0a0 ref=e5e7b0a0 (BLACKLISTED) tid=5a94e5d8
-08:46:13.619 [VRB] [PKT] DROP boundary dst=e5e7b0a0 ref=e5e7b0a0 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:46:13.626 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=183 type=1 ctx=0 hdr=1 dstt=0 hops=4 dst=295b4c2d ref=295b4c2d (BLACKLISTED) tid=5a94e5d8
-08:46:13.627 [VRB] [PKT] DROP boundary dst=295b4c2d ref=295b4c2d (BLACKLISTED) type=1 ctx=0 hdr=1
-08:46:13.906 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=73f6aee2 (WHITELISTED) tid=none
-08:46:13.907 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=6 phl=100)
-08:46:13.909 [VRB] [PATH] REQ dst=73f6aee2 (WHITELISTED) from=Interface[BackboneInterface3] local=0 sz=48
-08:46:13.911 [VRB] [HEAP-TEL] inbound: -804 bytes (heap=165036 pin=205 bma=6 phl=100 lt=1 revr=2)
-08:46:13.967 [VRB] mem_free: 166276 (53%) [-19140] flash_free: 3518464 (99%) [-4096] paths: 4 dsts: 5 revr: 2 annc: 0 held: 0
-08:46:13.969 [VRB] preqs: 2 dpreqs: 0 ppreqs: 0 dprt: 32 cdsts: 2 chshs: 2
-08:46:13.970 [VRB] phl: 100 rcp: 0 lt: 1 pl: 0 al: 0 tun: 0
-08:46:13.971 [VRB] bla: 2 bma: 6
-08:46:13.972 [VRB] pin: 205 pout: 13 padd: 4 dpr: 2 ikd: 5 ia: 0
-
-08:46:13.973 [VRB] [HEAP-TEL] jobs: 120 bytes (heap=166236)
-08:46:13.976 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=1177b011 (WHITELISTED) tid=none
-08:46:13.978 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=6 phl=100)
-08:46:13.980 [VRB] [PATH] REQ dst=1177b011 (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:46:13.982 [VRB] [HEAP-TEL] inbound: -796 bytes (heap=165336 pin=206 bma=6 phl=100 lt=1 revr=2)
-08:46:14.224 [VRB] [HEAP-TEL] jobs: 164 bytes (heap=166292)
-08:46:14.539 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=183 type=1 ctx=0 hdr=1 dstt=0 hops=4 dst=e5e7b0a0 ref=e5e7b0a0 (BLACKLISTED) tid=682e34ed
-08:46:14.540 [VRB] [PKT] DROP boundary dst=e5e7b0a0 ref=e5e7b0a0 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:46:14.547 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=225 type=1 ctx=0 hdr=1 dstt=0 hops=4 dst=a66f6f44 ref=a66f6f44 (BLACKLISTED) tid=682e34ed
-08:46:14.548 [VRB] [PKT] DROP boundary dst=a66f6f44 ref=a66f6f44 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:46:14.556 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=223 type=1 ctx=0 hdr=1 dstt=0 hops=10 dst=0f058fee ref=0f058fee (BLACKLISTED) tid=5a94e5d8
-08:46:14.557 [VRB] [PKT] DROP boundary dst=0f058fee ref=0f058fee (BLACKLISTED) type=1 ctx=0 hdr=1
-08:46:14.930 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=feef0934 (WHITELISTED) tid=none
-08:46:14.931 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=6 phl=100)
-08:46:14.933 [VRB] [PATH] REQ dst=feef0934 (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:46:14.935 [VRB] [HEAP-TEL] inbound: -796 bytes (heap=165024 pin=210 bma=6 phl=100 lt=1 revr=2)
-08:46:14.939 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=feef0934 (WHITELISTED) tid=none
-08:46:14.940 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=6 phl=100)
-08:46:14.942 [VRB] [PATH] REQ dst=feef0934 (WHITELISTED) from=Interface[BackboneInterface3] local=0 sz=48
-08:46:14.943 [VRB] [HEAP-TEL] inbound: -760 bytes (heap=164956 pin=211 bma=6 phl=100 lt=1 revr=2)
-08:46:14.977 [VRB] [HEAP-TEL] jobs: 156 bytes (heap=166156)
-08:46:16.873 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=b81ece76 (WHITELISTED) tid=none
-08:46:16.875 [VRB] [HEAP-TEL] boundary: -776 bytes (bma=6 phl=100)
-08:46:16.877 [VRB] [PATH] REQ dst=b81ece76 (WHITELISTED) from=Interface[BackboneInterface3] local=0 sz=48
-08:46:16.879 [VRB] [HEAP-TEL] inbound: -1024 bytes (heap=164848 pin=212 bma=6 phl=100 lt=1 revr=2)
-08:46:17.022 [VRB] [HEAP-TEL] jobs: 156 bytes (heap=166288)
-08:46:17.292 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=8965ddc8 (WHITELISTED) tid=none
-08:46:17.293 [VRB] [HEAP-TEL] boundary: -768 bytes (bma=6 phl=100)
-08:46:17.295 [VRB] [PATH] REQ dst=8965ddc8 (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:46:17.297 [VRB] [HEAP-TEL] inbound: -804 bytes (heap=165056 pin=213 bma=6 phl=100 lt=1 revr=2)
-08:46:17.301 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=b81ece76 (WHITELISTED) tid=none
-08:46:17.302 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=6 phl=100)
-08:46:17.304 [VRB] [PATH] REQ dst=b81ece76 (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:46:17.305 [VRB] [HEAP-TEL] inbound: -636 bytes (heap=165060 pin=214 bma=6 phl=100 lt=1 revr=2)
-08:46:17.308 [VRB] [HEAP-TEL] jobs: 156 bytes (heap=166288)
-08:46:17.692 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=e184e397 (WHITELISTED) tid=none
-08:46:17.693 [VRB] [HEAP-TEL] boundary: -772 bytes (bma=6 phl=100)
-08:46:17.695 [VRB] [PATH] REQ dst=e184e397 (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:46:17.697 [VRB] [HEAP-TEL] inbound: -816 bytes (heap=165328 pin=215 bma=6 phl=100 lt=1 revr=2)
-08:46:17.810 [VRB] [HEAP-TEL] jobs: 156 bytes (heap=166268)
-08:46:19.025 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=7e179a07 (WHITELISTED) tid=none
-08:46:19.027 [VRB] [HEAP-TEL] boundary: -744 bytes (bma=6 phl=100)
-08:46:19.029 [VRB] [PATH] REQ dst=7e179a07 (WHITELISTED) from=Interface[BackboneInterface3] local=0 sz=48
-08:46:19.031 [VRB] [HEAP-TEL] inbound: -900 bytes (heap=165236 pin=216 bma=6 phl=100 lt=1 revr=2)
-08:46:19.090 [VRB] [HEAP-TEL] jobs: 156 bytes (heap=166280)
-08:46:19.641 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=86 type=2 ctx=0 hdr=0 dstt=0 hops=2 dst=13f4b14d ref=13f4b14d (WHITELISTED) tid=none
-08:46:19.642 [VRB] [HEAP-TEL] boundary: -672 bytes (bma=6 phl=100)
-08:46:19.645 [VRB] [LINK] CREATE dst=13f4b14d (WHITELISTED) link=57c25ccc rem=0 recv=Interface[BackboneInterface3] out=Interface[LocalTcpInterface] lt=2
-08:46:19.649 [VRB] [HEAP-TEL] inbound: -2784 bytes (heap=163328 pin=217 bma=6 phl=100 lt=2 revr=2)
-08:46:19.670 [VRB] [PKT] IN iface=Interface[LocalTcpInterface] sz=118 type=3 ctx=255 hdr=0 dstt=3 hops=1 dst=57c25ccc ref=57c25ccc (BLACKLISTED) tid=none
-08:46:19.672 [VRB] [HEAP-TEL] boundary: -768 bytes (bma=7 phl=100)
-08:46:19.673 [VRB] [LRPROOF] IN dst=57c25ccc (WHITELISTED) hops=0 recv=Interface[LocalTcpInterface] in_lt=1 for_lcl=1 from_lcl=1
-08:46:19.762 [VRB] [LRPROOF] FWD dst=57c25ccc (WHITELISTED) to=Interface[BackboneInterface3] size=118
-08:46:19.767 [VRB] [HEAP-TEL] inbound: -2820 bytes (heap=162660 pin=218 bma=7 phl=100 lt=2 revr=2)
-08:46:19.822 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=211 type=0 ctx=0 hdr=0 dstt=3 hops=2 dst=57c25ccc ref=57c25ccc (WHITELISTED) tid=none
-08:46:19.824 [VRB] [HEAP-TEL] boundary: -816 bytes (bma=7 phl=100)
-08:46:19.825 [VRB] [LINK] XPORT pkt=57c25ccc (WHITELISTED) type=0 ctx=0 hops=2 recv=Interface[BackboneInterface3] entry_recv=Interface[BackboneInterface3] entry_out=Interface[LocalTcpInterface] rem=0 taken=2 val=1
-08:46:19.827 [VRB] [LINK] FWD dst=57c25ccc (WHITELISTED) to=Interface[LocalTcpInterface] size=211
-08:46:19.831 [VRB] [HEAP-TEL] inbound: -2708 bytes (heap=162532 pin=219 bma=7 phl=100 lt=2 revr=2)
-08:46:19.835 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=83 type=0 ctx=254 hdr=0 dstt=3 hops=2 dst=57c25ccc ref=57c25ccc (WHITELISTED) tid=none
-08:46:19.836 [VRB] [HEAP-TEL] boundary: -684 bytes (bma=7 phl=100)
-08:46:19.837 [VRB] [LINK] XPORT pkt=57c25ccc (WHITELISTED) type=0 ctx=254 hops=2 recv=Interface[BackboneInterface3] entry_recv=Interface[BackboneInterface3] entry_out=Interface[LocalTcpInterface] rem=0 taken=2 val=1
-08:46:19.839 [VRB] [LINK] FWD dst=57c25ccc (WHITELISTED) to=Interface[LocalTcpInterface] size=83
-08:46:19.843 [VRB] [HEAP-TEL] inbound: -2440 bytes (heap=160916 pin=220 bma=7 phl=100 lt=2 revr=2)
-08:46:22.737 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=206 type=1 ctx=0 hdr=1 dstt=0 hops=3 dst=ee930b21 ref=ee930b21 (BLACKLISTED) tid=682e34ed
-08:46:22.738 [VRB] [PKT] DROP boundary dst=ee930b21 ref=ee930b21 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:46:22.745 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=240 type=1 ctx=0 hdr=1 dstt=0 hops=3 dst=bcb0082c ref=bcb0082c (BLACKLISTED) tid=682e34ed
-08:46:22.746 [VRB] [PKT] DROP boundary dst=bcb0082c ref=bcb0082c (BLACKLISTED) type=1 ctx=0 hdr=1
-[TcpIF] Connecting to rns.birdsnet.co.br:4242 (DNS)...
-[146028][E][WiFiGeneric.cpp:1583] hostByName(): DNS Failed for rns.birdsnet.co.br
-[TcpIF] DNS failed for rns.birdsnet.co.br
-[TcpIF] Failed to connect to rns.birdsnet.co.br:4242 (attempt 4, next retry in 120s)
-08:46:25.006 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=f3f80c2f (WHITELISTED) tid=none
-08:46:25.008 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=7 phl=100)
-08:46:25.010 [VRB] [PATH] REQ dst=f3f80c2f (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:46:25.012 [VRB] [HEAP-TEL] inbound: -588 bytes (heap=164376 pin=223 bma=7 phl=100 lt=2 revr=2)
-08:46:25.223 [VRB] [HEAP-TEL] jobs: 160 bytes (heap=165816)
-08:46:25.787 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=214 type=1 ctx=0 hdr=1 dstt=0 hops=3 dst=a011c330 ref=a011c330 (BLACKLISTED) tid=682e34ed
-08:46:25.789 [VRB] [PKT] DROP boundary dst=a011c330 ref=a011c330 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:46:27.939 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=310 type=1 ctx=0 hdr=1 dstt=0 hops=2 dst=6b623156 ref=6b623156 (BLACKLISTED) tid=682e34ed
-08:46:27.941 [VRB] [PKT] DROP boundary dst=6b623156 ref=6b623156 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:46:29.285 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=310 type=1 ctx=0 hdr=1 dstt=0 hops=4 dst=6b623156 ref=6b623156 (BLACKLISTED) tid=5a94e5d8
-08:46:29.286 [VRB] [PKT] DROP boundary dst=6b623156 ref=6b623156 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:46:29.453 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=97f3781c (WHITELISTED) tid=none
-08:46:29.454 [VRB] [HEAP-TEL] boundary: -772 bytes (bma=7 phl=100)
-08:46:29.456 [VRB] [PATH] REQ dst=97f3781c (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:46:29.458 [VRB] [HEAP-TEL] inbound: -820 bytes (heap=164584 pin=227 bma=7 phl=100 lt=2 revr=2)
-08:46:29.622 [VRB] [HEAP-TEL] jobs: 164 bytes (heap=165816)
-08:46:29.646 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=a1c8126d (WHITELISTED) tid=none
-08:46:29.648 [VRB] [HEAP-TEL] boundary: -780 bytes (bma=7 phl=100)
-08:46:29.650 [VRB] [PATH] REQ dst=a1c8126d (WHITELISTED) from=Interface[BackboneInterface3] local=0 sz=48
-08:46:29.652 [VRB] [HEAP-TEL] inbound: -840 bytes (heap=164572 pin=228 bma=7 phl=100 lt=2 revr=2)
-08:46:29.874 [VRB] [HEAP-TEL] jobs: 156 bytes (heap=165784)
-08:46:29.903 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=191 type=1 ctx=0 hdr=1 dstt=0 hops=5 dst=9f3a20b5 ref=9f3a20b5 (BLACKLISTED) tid=682e34ed
-08:46:29.905 [VRB] [PKT] DROP boundary dst=9f3a20b5 ref=9f3a20b5 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:46:32.851 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=97f3781c (WHITELISTED) tid=none
-08:46:32.852 [VRB] [HEAP-TEL] boundary: -748 bytes (bma=7 phl=100)
-08:46:32.854 [VRB] [PATH] REQ dst=97f3781c (WHITELISTED) from=Interface[BackboneInterface3] local=0 sz=48
-08:46:32.856 [VRB] [HEAP-TEL] inbound: -796 bytes (heap=164584 pin=230 bma=7 phl=100 lt=2 revr=2)
-08:46:32.974 [VRB] [HEAP-TEL] jobs: 156 bytes (heap=165784)
-08:46:34.627 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=192 type=1 ctx=0 hdr=1 dstt=0 hops=2 dst=6aa43c2e ref=6aa43c2e (BLACKLISTED) tid=5a94e5d8
-08:46:34.628 [VRB] [PKT] DROP boundary dst=6aa43c2e ref=6aa43c2e (BLACKLISTED) type=1 ctx=0 hdr=1
-08:46:35.105 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=192 type=1 ctx=0 hdr=1 dstt=0 hops=5 dst=6aa43c2e ref=6aa43c2e (BLACKLISTED) tid=682e34ed
-08:46:35.107 [VRB] [PKT] DROP boundary dst=6aa43c2e ref=6aa43c2e (BLACKLISTED) type=1 ctx=0 hdr=1
-08:46:35.620 [VRB] [PKT] IN iface=Interface[LocalTcpInterface] sz=209 type=1 ctx=0 hdr=0 dstt=0 hops=1 dst=13f4b14d ref=13f4b14d (WHITELISTED) tid=none
-08:46:35.621 [VRB] [HEAP-TEL] boundary: -800 bytes (bma=7 phl=100)
-08:46:35.636 [VRB] [ANNC] IN dst=13f4b14d (WHITELISTED) valid=1 ctx=0 hops=0 iface=Interface[LocalTcpInterface] data=190
-08:46:35.641 [VRB] [PATH] STORED dst=13f4b14d (WHITELISTED) hops=0 iface=Interface[LocalTcpInterface] paths=4 bla=2
-08:46:35.642 [VRB] [HEAP-TEL] inbound: -1260 bytes (heap=163912 pin=233 bma=7 phl=100 lt=2 revr=2)
-08:46:35.646 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=995cc385 (WHITELISTED) tid=none
-08:46:35.648 [VRB] [HEAP-TEL] boundary: -1044 bytes (bma=7 phl=100)
-08:46:35.651 [VRB] [PATH] REQ dst=995cc385 (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:46:35.653 [VRB] [HEAP-TEL] inbound: -1012 bytes (heap=162804 pin=234 bma=7 phl=100 lt=2 revr=2)
-08:46:35.816 [VRB] [HEAP-TEL] jobs: -1392 bytes (heap=162684)
-08:46:35.817 [VRB] [LoRa] TX 225 bytes
-08:46:36.034 [VRB] [LoRa] TXSTART 225 bytes
-[Boundary] TXCFG f=914875000 sf=10 bw=4 cr=1 ldro=0 pre=18 hdr=0 len=226 crc=1 iq=0 txp=19
-[Boundary] TXDONE irq=0001 timeout=0 pa=1
-08:46:38.214 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=225 type=1 ctx=0 hdr=1 dstt=0 hops=4 dst=3fb879d0 ref=3fb879d0 (BLACKLISTED) tid=682e34ed
-08:46:38.215 [VRB] [PKT] DROP boundary dst=3fb879d0 ref=3fb879d0 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:46:38.221 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=225 type=1 ctx=0 hdr=1 dstt=0 hops=2 dst=13f4b14d ref=13f4b14d (WHITELISTED) tid=682e34ed
-08:46:38.223 [VRB] [HEAP-TEL] boundary: -892 bytes (bma=7 phl=100)
-08:46:38.238 [VRB] [ANNC] IN dst=13f4b14d (WHITELISTED) valid=1 ctx=0 hops=2 iface=Interface[BackboneInterface1] data=190
-08:46:38.240 [VRB] [HEAP-TEL] inbound: -892 bytes (heap=162708 pin=236 bma=7 phl=100 lt=2 revr=2)
-08:46:38.244 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=feef0934 (WHITELISTED) tid=none
-08:46:38.245 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=7 phl=100)
-08:46:38.247 [VRB] [PATH] REQ dst=feef0934 (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:46:38.249 [VRB] [HEAP-TEL] inbound: -908 bytes (heap=162844 pin=237 bma=7 phl=100 lt=2 revr=2)
-08:46:38.253 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=8bb35bb9 (WHITELISTED) tid=none
-08:46:38.254 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=7 phl=100)
-08:46:38.256 [VRB] [PATH] REQ dst=8bb35bb9 (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:46:38.258 [VRB] [HEAP-TEL] inbound: -788 bytes (heap=162808 pin=238 bma=7 phl=100 lt=2 revr=2)
-08:46:38.262 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=b81ece76 (WHITELISTED) tid=none
-08:46:38.263 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=7 phl=100)
-08:46:38.265 [VRB] [PATH] REQ dst=b81ece76 (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:46:38.267 [VRB] [HEAP-TEL] inbound: -800 bytes (heap=162644 pin=239 bma=7 phl=100 lt=2 revr=2)
-08:46:38.275 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=225 type=1 ctx=0 hdr=1 dstt=0 hops=4 dst=3fb879d0 ref=3fb879d0 (BLACKLISTED) tid=5a94e5d8
-08:46:38.277 [VRB] [PKT] DROP boundary dst=3fb879d0 ref=3fb879d0 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:46:40.840 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=183 type=1 ctx=0 hdr=1 dstt=0 hops=3 dst=61e1dd6c ref=61e1dd6c (BLACKLISTED) tid=5a94e5d8
-08:46:40.841 [VRB] [PKT] DROP boundary dst=61e1dd6c ref=61e1dd6c (BLACKLISTED) type=1 ctx=0 hdr=1
-08:46:41.244 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=e3af5f5e (WHITELISTED) tid=none
-08:46:41.246 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=7 phl=100)
-08:46:41.248 [VRB] [PATH] REQ dst=e3af5f5e (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:46:41.250 [VRB] [HEAP-TEL] inbound: -820 bytes (heap=162804 pin=242 bma=7 phl=100 lt=2 revr=2)
-08:46:41.364 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=214 type=1 ctx=0 hdr=1 dstt=0 hops=4 dst=383c8351 ref=383c8351 (BLACKLISTED) tid=682e34ed
-08:46:41.365 [VRB] [PKT] DROP boundary dst=383c8351 ref=383c8351 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:46:41.371 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=183 type=1 ctx=0 hdr=1 dstt=0 hops=3 dst=61e1dd6c ref=61e1dd6c (BLACKLISTED) tid=682e34ed
-08:46:41.372 [VRB] [PKT] DROP boundary dst=61e1dd6c ref=61e1dd6c (BLACKLISTED) type=1 ctx=0 hdr=1
-08:46:42.272 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=211 type=0 ctx=0 hdr=0 dstt=3 hops=2 dst=57c25ccc ref=57c25ccc (WHITELISTED) tid=none
-08:46:42.273 [VRB] [HEAP-TEL] boundary: -812 bytes (bma=7 phl=100)
-08:46:42.274 [VRB] [LINK] XPORT pkt=57c25ccc (WHITELISTED) type=0 ctx=0 hops=2 recv=Interface[BackboneInterface3] entry_recv=Interface[BackboneInterface3] entry_out=Interface[LocalTcpInterface] rem=0 taken=2 val=1
-08:46:42.276 [VRB] [LINK] FWD dst=57c25ccc (WHITELISTED) to=Interface[LocalTcpInterface] size=211
-08:46:42.280 [VRB] [HEAP-TEL] inbound: -2288 bytes (heap=160744 pin=245 bma=7 phl=100 lt=2 revr=2)
-08:46:42.373 [VRB] [PKT] IN iface=Interface[LocalTcpInterface] sz=115 type=3 ctx=0 hdr=0 dstt=3 hops=1 dst=57c25ccc ref=57c25ccc (WHITELISTED) tid=none
-08:46:42.375 [VRB] [HEAP-TEL] boundary: -720 bytes (bma=7 phl=100)
-08:46:42.376 [VRB] [LINK] XPORT pkt=57c25ccc (WHITELISTED) type=3 ctx=0 hops=0 recv=Interface[LocalTcpInterface] entry_recv=Interface[BackboneInterface3] entry_out=Interface[LocalTcpInterface] rem=0 taken=2 val=1
-08:46:42.378 [VRB] [LINK] FWD dst=57c25ccc (WHITELISTED) to=Interface[BackboneInterface3] size=115
-08:46:42.382 [VRB] [PROOF] LOCAL dst=57c25ccc (WHITELISTED) in_rev=0 from_lcl=1 proof_lcl=0
-08:46:42.384 [VRB] [HEAP-TEL] inbound: -2196 bytes (heap=160924 pin=246 bma=7 phl=100 lt=2 revr=2)
-08:46:42.421 [VRB] [HEAP-TEL] jobs: 1356 bytes (heap=164952)
-08:46:42.437 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=e184e397 (WHITELISTED) tid=none
-08:46:42.439 [VRB] [HEAP-TEL] boundary: -552 bytes (bma=7 phl=100)
-08:46:42.441 [VRB] [PATH] REQ dst=e184e397 (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:46:42.443 [VRB] [HEAP-TEL] inbound: -592 bytes (heap=164000 pin=247 bma=7 phl=100 lt=2 revr=2)
-08:46:42.688 [VRB] [HEAP-TEL] jobs: 156 bytes (heap=164956)
-08:46:43.725 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=def7c88f (WHITELISTED) tid=none
-08:46:43.726 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=7 phl=100)
-08:46:43.728 [VRB] [PATH] REQ dst=def7c88f (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:46:43.730 [VRB] [HEAP-TEL] inbound: -804 bytes (heap=163708 pin=248 bma=7 phl=100 lt=2 revr=2)
-08:46:43.732 [VRB] [HEAP-TEL] jobs: 156 bytes (heap=164952)
-08:46:44.626 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=a3dfea28 (WHITELISTED) tid=none
-08:46:44.627 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=7 phl=100)
-08:46:44.629 [VRB] [PATH] REQ dst=a3dfea28 (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:46:44.631 [VRB] [HEAP-TEL] inbound: -920 bytes (heap=163600 pin=249 bma=7 phl=100 lt=2 revr=2)
-08:46:44.756 [VRB] [HEAP-TEL] jobs: 156 bytes (heap=164952)
-08:46:47.186 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=193 type=1 ctx=0 hdr=1 dstt=0 hops=4 dst=e8063ffd ref=e8063ffd (BLACKLISTED) tid=5a94e5d8
-08:46:47.188 [VRB] [PKT] DROP boundary dst=e8063ffd ref=e8063ffd (BLACKLISTED) type=1 ctx=0 hdr=1
-08:46:47.451 [VRB] [PKT] IN iface=Interface[LocalTcpInterface] sz=227 type=0 ctx=0 hdr=1 dstt=0 hops=1 dst=7509e054 ref=7509e054 (WHITELISTED) tid=7e9c03b9
-08:46:47.452 [VRB] [HEAP-TEL] boundary: -904 bytes (bma=7 phl=100)
-08:46:47.457 [VRB] [HEAP-TEL] inbound: -2992 bytes (heap=161644 pin=251 bma=7 phl=100 lt=2 revr=3)
-08:46:47.518 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=f3f80c2f (WHITELISTED) tid=none
-08:46:47.519 [VRB] [HEAP-TEL] boundary: -768 bytes (bma=7 phl=100)
-08:46:47.521 [VRB] [PATH] REQ dst=f3f80c2f (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:46:47.523 [VRB] [HEAP-TEL] inbound: -816 bytes (heap=163492 pin=252 bma=7 phl=100 lt=2 revr=3)
-08:46:47.527 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=83 type=3 ctx=0 hdr=0 dstt=0 hops=2 dst=b0f9dbc2 ref=b0f9dbc2 (BLACKLISTED) tid=none
-08:46:47.529 [VRB] [HEAP-TEL] boundary: -672 bytes (bma=7 phl=100)
-08:46:47.531 [VRB] [PROOF] XPORT dst=b0f9dbc2 (BLACKLISTED) data=64 hops=2 recv=Interface[BackboneInterface3] out=Interface[LocalTcpInterface]
-08:46:47.535 [VRB] [HEAP-TEL] inbound: -2432 bytes (heap=161752 pin=253 bma=7 phl=100 lt=2 revr=3)
-08:46:47.571 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=193 type=1 ctx=0 hdr=1 dstt=0 hops=3 dst=e8063ffd ref=e8063ffd (BLACKLISTED) tid=682e34ed
-08:46:47.572 [VRB] [PKT] DROP boundary dst=e8063ffd ref=e8063ffd (BLACKLISTED) type=1 ctx=0 hdr=1
-08:46:50.466 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=183 type=1 ctx=0 hdr=1 dstt=0 hops=4 dst=33c15521 ref=33c15521 (BLACKLISTED) tid=5a94e5d8
-08:46:50.467 [VRB] [PKT] DROP boundary dst=33c15521 ref=33c15521 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:46:50.873 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=183 type=1 ctx=0 hdr=1 dstt=0 hops=4 dst=33c15521 ref=33c15521 (BLACKLISTED) tid=682e34ed
-08:46:50.875 [VRB] [PKT] DROP boundary dst=33c15521 ref=33c15521 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:46:51.388 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=204f895a (WHITELISTED) tid=none
-08:46:51.390 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=7 phl=100)
-08:46:51.392 [VRB] [PATH] REQ dst=204f895a (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:46:51.394 [VRB] [HEAP-TEL] inbound: -804 bytes (heap=163396 pin=257 bma=7 phl=100 lt=2 revr=3)
-08:46:51.479 [VRB] [HEAP-TEL] jobs: 316 bytes (heap=164636)
-08:46:52.927 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=97f3781c (WHITELISTED) tid=none
-08:46:52.928 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=7 phl=100)
-08:46:52.930 [VRB] [PATH] REQ dst=97f3781c (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:46:52.932 [VRB] [HEAP-TEL] inbound: -800 bytes (heap=163500 pin=258 bma=7 phl=100 lt=2 revr=3)
-08:46:52.941 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=346 type=1 ctx=0 hdr=1 dstt=0 hops=2 dst=36ebf40b ref=36ebf40b (BLACKLISTED) tid=682e34ed
-08:46:52.942 [VRB] [PKT] DROP boundary dst=36ebf40b ref=36ebf40b (BLACKLISTED) type=1 ctx=0 hdr=1
-08:46:53.202 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=a1f39935 (WHITELISTED) tid=none
-08:46:53.204 [VRB] [HEAP-TEL] boundary: -748 bytes (bma=7 phl=100)
-08:46:53.206 [VRB] [PATH] REQ dst=a1f39935 (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:46:53.208 [VRB] [HEAP-TEL] inbound: -912 bytes (heap=163232 pin=260 bma=7 phl=100 lt=2 revr=3)
-08:46:53.214 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=211 type=0 ctx=0 hdr=0 dstt=3 hops=2 dst=57c25ccc ref=57c25ccc (WHITELISTED) tid=none
-08:46:53.216 [VRB] [HEAP-TEL] boundary: -796 bytes (bma=7 phl=100)
-08:46:53.217 [VRB] [LINK] XPORT pkt=57c25ccc (WHITELISTED) type=0 ctx=0 hops=2 recv=Interface[BackboneInterface3] entry_recv=Interface[BackboneInterface3] entry_out=Interface[LocalTcpInterface] rem=0 taken=2 val=1
-08:46:53.219 [VRB] [LINK] FWD dst=57c25ccc (WHITELISTED) to=Interface[LocalTcpInterface] size=211
-08:46:53.223 [VRB] [HEAP-TEL] inbound: -2804 bytes (heap=161076 pin=261 bma=7 phl=100 lt=2 revr=3)
-08:46:53.235 [VRB] [PKT] IN iface=Interface[LocalTcpInterface] sz=115 type=3 ctx=0 hdr=0 dstt=3 hops=1 dst=57c25ccc ref=57c25ccc (WHITELISTED) tid=none
-08:46:53.236 [VRB] [HEAP-TEL] boundary: -700 bytes (bma=7 phl=100)
-08:46:53.237 [VRB] [LINK] XPORT pkt=57c25ccc (WHITELISTED) type=3 ctx=0 hops=0 recv=Interface[LocalTcpInterface] entry_recv=Interface[BackboneInterface3] entry_out=Interface[LocalTcpInterface] rem=0 taken=2 val=1
-08:46:53.239 [VRB] [LINK] FWD dst=57c25ccc (WHITELISTED) to=Interface[BackboneInterface3] size=115
-08:46:53.243 [VRB] [PROOF] LOCAL dst=57c25ccc (WHITELISTED) in_rev=0 from_lcl=1 proof_lcl=0
-08:46:53.245 [VRB] [HEAP-TEL] inbound: -2168 bytes (heap=162092 pin=262 bma=7 phl=100 lt=2 revr=3)
-08:46:53.278 [VRB] [HEAP-TEL] jobs: 320 bytes (heap=163196)
-08:46:53.442 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=346 type=1 ctx=0 hdr=1 dstt=0 hops=2 dst=36ebf40b ref=36ebf40b (BLACKLISTED) tid=5a94e5d8
-08:46:53.444 [VRB] [PKT] DROP boundary dst=36ebf40b ref=36ebf40b (BLACKLISTED) type=1 ctx=0 hdr=1
-08:46:53.472 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=214 type=1 ctx=0 hdr=1 dstt=0 hops=2 dst=ba5ab5a2 ref=ba5ab5a2 (BLACKLISTED) tid=5a94e5d8
-08:46:53.474 [VRB] [PKT] DROP boundary dst=ba5ab5a2 ref=ba5ab5a2 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:46:53.501 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=236 type=1 ctx=0 hdr=1 dstt=0 hops=4 dst=3578ecb9 ref=3578ecb9 (BLACKLISTED) tid=5a94e5d8
-08:46:53.503 [VRB] [PKT] DROP boundary dst=3578ecb9 ref=3578ecb9 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:46:54.153 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=246 type=1 ctx=0 hdr=1 dstt=0 hops=4 dst=3e7ca682 ref=3e7ca682 (BLACKLISTED) tid=682e34ed
-08:46:54.154 [VRB] [PKT] DROP boundary dst=3e7ca682 ref=3e7ca682 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:46:54.160 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=236 type=1 ctx=0 hdr=1 dstt=0 hops=5 dst=3578ecb9 ref=3578ecb9 (BLACKLISTED) tid=682e34ed
-08:46:54.162 [VRB] [PKT] DROP boundary dst=3578ecb9 ref=3578ecb9 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:46:55.278 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=214 type=1 ctx=0 hdr=1 dstt=0 hops=4 dst=ba5ab5a2 ref=ba5ab5a2 (BLACKLISTED) tid=682e34ed
-08:46:55.280 [VRB] [PKT] DROP boundary dst=ba5ab5a2 ref=ba5ab5a2 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:46:55.686 [VRB] [PKT] IN iface=Interface[LocalTcpInterface] sz=198 type=1 ctx=0 hdr=0 dstt=0 hops=1 dst=3c1f60d2 ref=3c1f60d2 (WHITELISTED) tid=none
-08:46:55.688 [VRB] [HEAP-TEL] boundary: -800 bytes (bma=7 phl=100)
-08:46:55.777 [VRB] [ANNC] IN dst=3c1f60d2 (WHITELISTED) valid=1 ctx=0 hops=0 iface=Interface[LocalTcpInterface] data=179
-08:46:55.782 [VRB] [PATH] STORED dst=3c1f60d2 (WHITELISTED) hops=0 iface=Interface[LocalTcpInterface] paths=4 bla=2
-08:46:55.783 [VRB] [HEAP-TEL] inbound: -1292 bytes (heap=163216 pin=269 bma=7 phl=100 lt=2 revr=3)
-08:46:55.869 [VRB] [HEAP-TEL] jobs: -1540 bytes (heap=161676)
-08:46:55.870 [VRB] [LoRa] TX 214 bytes
-08:46:56.075 [VRB] [LoRa] TXSTART 214 bytes
-[Boundary] TXCFG f=914875000 sf=10 bw=4 cr=1 ldro=0 pre=18 hdr=0 len=215 crc=1 iq=0 txp=19
-[Boundary] TXDONE irq=0001 timeout=0 pa=1
-08:46:58.174 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=215 type=1 ctx=0 hdr=1 dstt=0 hops=3 dst=8aed952a ref=8aed952a (BLACKLISTED) tid=682e34ed
-08:46:58.175 [VRB] [PKT] DROP boundary dst=8aed952a ref=8aed952a (BLACKLISTED) type=1 ctx=0 hdr=1
-08:46:58.181 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=215 type=1 ctx=0 hdr=1 dstt=0 hops=3 dst=19497a63 ref=19497a63 (BLACKLISTED) tid=682e34ed
-08:46:58.183 [VRB] [PKT] DROP boundary dst=19497a63 ref=19497a63 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:46:58.189 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=215 type=1 ctx=0 hdr=1 dstt=0 hops=3 dst=5e1f87bc ref=5e1f87bc (BLACKLISTED) tid=682e34ed
-08:46:58.191 [VRB] [PKT] DROP boundary dst=5e1f87bc ref=5e1f87bc (BLACKLISTED) type=1 ctx=0 hdr=1
-08:46:58.197 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=226 type=1 ctx=0 hdr=1 dstt=0 hops=4 dst=e190d8d2 ref=e190d8d2 (BLACKLISTED) tid=682e34ed
-08:46:58.199 [VRB] [PKT] DROP boundary dst=e190d8d2 ref=e190d8d2 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:46:58.205 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=237 type=1 ctx=0 hdr=1 dstt=0 hops=4 dst=5440f5d4 ref=5440f5d4 (BLACKLISTED) tid=682e34ed
-08:46:58.207 [VRB] [PKT] DROP boundary dst=5440f5d4 ref=5440f5d4 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:46:58.211 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=995cc385 (WHITELISTED) tid=none
-08:46:58.212 [VRB] [HEAP-TEL] boundary: -744 bytes (bma=7 phl=100)
-08:46:58.214 [VRB] [PATH] REQ dst=995cc385 (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:46:58.216 [VRB] [HEAP-TEL] inbound: -900 bytes (heap=161728 pin=275 bma=7 phl=100 lt=2 revr=3)
-08:46:58.220 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=94a57959 (WHITELISTED) tid=none
-08:46:58.222 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=7 phl=100)
-08:46:58.224 [VRB] [PATH] REQ dst=94a57959 (WHITELISTED) from=Interface[BackboneInterface3] local=0 sz=48
-08:46:58.226 [VRB] [HEAP-TEL] inbound: -916 bytes (heap=161724 pin=276 bma=7 phl=100 lt=2 revr=3)
-08:46:58.232 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=215 type=1 ctx=0 hdr=1 dstt=0 hops=3 dst=19497a63 ref=19497a63 (BLACKLISTED) tid=5a94e5d8
-08:46:58.234 [VRB] [PKT] DROP boundary dst=19497a63 ref=19497a63 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:46:58.240 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=215 type=1 ctx=0 hdr=1 dstt=0 hops=3 dst=5e1f87bc ref=5e1f87bc (BLACKLISTED) tid=5a94e5d8
-08:46:58.241 [VRB] [PKT] DROP boundary dst=5e1f87bc ref=5e1f87bc (BLACKLISTED) type=1 ctx=0 hdr=1
-08:46:58.247 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=215 type=1 ctx=0 hdr=1 dstt=0 hops=5 dst=42204509 ref=42204509 (BLACKLISTED) tid=5a94e5d8
-08:46:58.249 [VRB] [PKT] DROP boundary dst=42204509 ref=42204509 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:46:58.452 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=215 type=1 ctx=0 hdr=1 dstt=0 hops=5 dst=42204509 ref=42204509 (BLACKLISTED) tid=682e34ed
-08:46:58.454 [VRB] [PKT] DROP boundary dst=42204509 ref=42204509 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:46:59.172 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=1a63d1c2 (WHITELISTED) tid=none
-08:46:59.174 [VRB] [HEAP-TEL] boundary: -776 bytes (bma=7 phl=100)
-08:46:59.176 [VRB] [PATH] REQ dst=1a63d1c2 (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:46:59.178 [VRB] [HEAP-TEL] inbound: -932 bytes (heap=161548 pin=281 bma=7 phl=100 lt=2 revr=3)
-08:46:59.281 [VRB] [HEAP-TEL] jobs: 1188 bytes (heap=163936)
-08:47:01.115 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=194 type=1 ctx=0 hdr=1 dstt=0 hops=2 dst=6d615187 ref=6d615187 (BLACKLISTED) tid=5a94e5d8
-08:47:01.116 [VRB] [PKT] DROP boundary dst=6d615187 ref=6d615187 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:47:03.363 [VRB] [PKT] IN iface=Interface[LocalTcpInterface] sz=20 type=0 ctx=250 hdr=0 dstt=3 hops=1 dst=0d810efb ref=0d810efb (WHITELISTED) tid=none
-08:47:03.364 [VRB] [HEAP-TEL] boundary: -612 bytes (bma=7 phl=100)
-08:47:03.365 [VRB] [LINK] XPORT pkt=0d810efb (WHITELISTED) type=0 ctx=250 hops=0 recv=Interface[LocalTcpInterface] entry_recv=Interface[LocalTcpInterface] entry_out=Interface[BackboneInterface1] rem=2 taken=0 val=1
-08:47:03.367 [VRB] [LINK] FWD dst=0d810efb (WHITELISTED) to=Interface[BackboneInterface1] size=20
-08:47:03.371 [VRB] [HEAP-TEL] inbound: -2324 bytes (heap=161224 pin=283 bma=7 phl=100 lt=2 revr=3)
-08:47:03.535 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=20 type=0 ctx=250 hdr=0 dstt=3 hops=2 dst=0d810efb ref=0d810efb (WHITELISTED) tid=none
-08:47:03.537 [VRB] [HEAP-TEL] boundary: -620 bytes (bma=7 phl=100)
-08:47:03.540 [VRB] [LINK] XPORT pkt=0d810efb (WHITELISTED) type=0 ctx=250 hops=2 recv=Interface[BackboneInterface1] entry_recv=Interface[LocalTcpInterface] entry_out=Interface[BackboneInterface1] rem=2 taken=0 val=1
-08:47:03.541 [VRB] [LINK] FWD dst=0d810efb (WHITELISTED) to=Interface[LocalTcpInterface] size=20
-08:47:03.545 [VRB] [HEAP-TEL] inbound: -2436 bytes (heap=161096 pin=284 bma=7 phl=100 lt=2 revr=3)
-08:47:04.084 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=236 type=1 ctx=0 hdr=1 dstt=0 hops=5 dst=3578ecb9 ref=3578ecb9 (BLACKLISTED) tid=682e34ed
-08:47:04.086 [VRB] [PKT] DROP boundary dst=3578ecb9 ref=3578ecb9 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:47:04.093 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=236 type=1 ctx=0 hdr=1 dstt=0 hops=4 dst=3578ecb9 ref=3578ecb9 (BLACKLISTED) tid=5a94e5d8
-08:47:04.094 [VRB] [PKT] DROP boundary dst=3578ecb9 ref=3578ecb9 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:47:04.130 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=12159bd2 (WHITELISTED) tid=none
-08:47:04.131 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=7 phl=100)
-08:47:04.133 [VRB] [PATH] REQ dst=12159bd2 (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:47:04.135 [VRB] [HEAP-TEL] inbound: -820 bytes (heap=162684 pin=287 bma=7 phl=100 lt=2 revr=3)
-08:47:04.228 [VRB] [HEAP-TEL] jobs: 164 bytes (heap=163964)
-08:47:04.901 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=c7f4790b (WHITELISTED) tid=none
-08:47:04.902 [VRB] [HEAP-TEL] boundary: -792 bytes (bma=7 phl=100)
-08:47:04.904 [VRB] [PATH] REQ dst=c7f4790b (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:47:04.906 [VRB] [HEAP-TEL] inbound: -948 bytes (heap=162556 pin=288 bma=7 phl=100 lt=2 revr=3)
-08:47:04.992 [VRB] [HEAP-TEL] jobs: 156 bytes (heap=163964)
-08:47:06.744 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=c9166776 (WHITELISTED) tid=none
-08:47:06.745 [VRB] [HEAP-TEL] boundary: -792 bytes (bma=7 phl=100)
-08:47:06.747 [VRB] [PATH] REQ dst=c9166776 (WHITELISTED) from=Interface[BackboneInterface3] local=0 sz=48
-08:47:06.749 [VRB] [HEAP-TEL] inbound: -952 bytes (heap=162552 pin=289 bma=7 phl=100 lt=2 revr=3)
-08:47:06.795 [VRB] [HEAP-TEL] jobs: 156 bytes (heap=163960)
-08:47:07.159 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=302 type=1 ctx=0 hdr=1 dstt=0 hops=2 dst=075105a8 ref=075105a8 (BLACKLISTED) tid=682e34ed
-08:47:07.160 [VRB] [PKT] DROP boundary dst=075105a8 ref=075105a8 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:47:07.166 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=208 type=1 ctx=0 hdr=1 dstt=0 hops=3 dst=16ca26cb ref=16ca26cb (BLACKLISTED) tid=682e34ed
-08:47:07.167 [VRB] [PKT] DROP boundary dst=16ca26cb ref=16ca26cb (BLACKLISTED) type=1 ctx=0 hdr=1
-08:47:07.464 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=21c3b0d4 (WHITELISTED) tid=none
-08:47:07.466 [VRB] [HEAP-TEL] boundary: -788 bytes (bma=7 phl=100)
-08:47:07.468 [VRB] [PATH] REQ dst=21c3b0d4 (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:47:07.470 [VRB] [HEAP-TEL] inbound: -948 bytes (heap=162768 pin=292 bma=7 phl=100 lt=2 revr=3)
-08:47:07.477 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=208 type=1 ctx=0 hdr=1 dstt=0 hops=4 dst=16ca26cb ref=16ca26cb (BLACKLISTED) tid=5a94e5d8
-08:47:07.479 [VRB] [PKT] DROP boundary dst=16ca26cb ref=16ca26cb (BLACKLISTED) type=1 ctx=0 hdr=1
-08:47:07.483 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=21c3b0d4 (WHITELISTED) tid=none
-08:47:07.484 [VRB] [HEAP-TEL] boundary: -768 bytes (bma=7 phl=100)
-08:47:07.486 [VRB] [PATH] REQ dst=21c3b0d4 (WHITELISTED) from=Interface[BackboneInterface3] local=0 sz=48
-08:47:07.487 [VRB] [HEAP-TEL] inbound: -660 bytes (heap=162988 pin=294 bma=7 phl=100 lt=2 revr=3)
-08:47:07.578 [VRB] [HEAP-TEL] jobs: 160 bytes (heap=163952)
-08:47:07.664 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=a3dfea28 (WHITELISTED) tid=none
-08:47:07.665 [VRB] [HEAP-TEL] boundary: -788 bytes (bma=7 phl=100)
-08:47:07.667 [VRB] [PATH] REQ dst=a3dfea28 (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:47:07.669 [VRB] [HEAP-TEL] inbound: -840 bytes (heap=162968 pin=295 bma=7 phl=100 lt=2 revr=3)
-08:47:07.693 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=a3dfea28 (WHITELISTED) tid=none
-08:47:07.694 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=7 phl=100)
-08:47:07.696 [VRB] [PATH] REQ dst=a3dfea28 (WHITELISTED) from=Interface[BackboneInterface3] local=0 sz=48
-08:47:07.697 [VRB] [HEAP-TEL] inbound: -636 bytes (heap=162692 pin=296 bma=7 phl=100 lt=2 revr=3)
-08:47:07.831 [VRB] [HEAP-TEL] jobs: 168 bytes (heap=163948)
-08:47:11.374 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=240 type=1 ctx=0 hdr=1 dstt=0 hops=5 dst=7aedd9f9 ref=7aedd9f9 (BLACKLISTED) tid=682e34ed
-08:47:11.376 [VRB] [PKT] DROP boundary dst=7aedd9f9 ref=7aedd9f9 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:47:12.067 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=e01b8ef7 (WHITELISTED) tid=none
-08:47:12.069 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=7 phl=100)
-08:47:12.071 [VRB] [PATH] REQ dst=e01b8ef7 (WHITELISTED) from=Interface[BackboneInterface3] local=0 sz=48
-08:47:12.073 [VRB] [HEAP-TEL] inbound: -924 bytes (heap=162836 pin=298 bma=7 phl=100 lt=2 revr=3)
-08:47:12.078 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=27c7b2d8 (WHITELISTED) tid=none
-08:47:12.079 [VRB] [HEAP-TEL] boundary: -780 bytes (bma=7 phl=100)
-08:47:12.081 [VRB] [PATH] REQ dst=27c7b2d8 (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:47:12.083 [VRB] [HEAP-TEL] inbound: -816 bytes (heap=162520 pin=299 bma=7 phl=100 lt=2 revr=3)
-08:47:12.232 [VRB] [HEAP-TEL] jobs: 312 bytes (heap=163944)
-08:47:12.285 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=183 type=1 ctx=0 hdr=1 dstt=0 hops=3 dst=4c1503d8 ref=4c1503d8 (BLACKLISTED) tid=682e34ed
-08:47:12.287 [VRB] [PKT] DROP boundary dst=4c1503d8 ref=4c1503d8 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:47:12.306 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=214 type=1 ctx=0 hdr=1 dstt=0 hops=3 dst=a4ee2bdc ref=a4ee2bdc (BLACKLISTED) tid=682e34ed
-08:47:12.308 [VRB] [PKT] DROP boundary dst=a4ee2bdc ref=a4ee2bdc (BLACKLISTED) type=1 ctx=0 hdr=1
-08:47:12.711 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=204f895a (WHITELISTED) tid=none
-08:47:12.713 [VRB] [HEAP-TEL] boundary: -780 bytes (bma=7 phl=100)
-08:47:12.715 [VRB] [PATH] REQ dst=204f895a (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:47:12.717 [VRB] [HEAP-TEL] inbound: -940 bytes (heap=162860 pin=302 bma=7 phl=100 lt=2 revr=3)
-08:47:12.756 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=214 type=1 ctx=0 hdr=1 dstt=0 hops=2 dst=a4ee2bdc ref=a4ee2bdc (BLACKLISTED) tid=5a94e5d8
-08:47:12.758 [VRB] [PKT] DROP boundary dst=a4ee2bdc ref=a4ee2bdc (BLACKLISTED) type=1 ctx=0 hdr=1
-08:47:12.762 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=4cce8a55 (WHITELISTED) tid=none
-08:47:12.763 [VRB] [HEAP-TEL] boundary: -780 bytes (bma=7 phl=100)
-08:47:12.765 [VRB] [PATH] REQ dst=4cce8a55 (WHITELISTED) from=Interface[BackboneInterface3] local=0 sz=48
-08:47:12.767 [VRB] [HEAP-TEL] inbound: -828 bytes (heap=162472 pin=304 bma=7 phl=100 lt=2 revr=3)
-08:47:12.768 [VRB] [HEAP-TEL] jobs: 316 bytes (heap=163892)
-08:47:12.772 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=df3a673b (WHITELISTED) tid=none
-08:47:12.773 [VRB] [HEAP-TEL] boundary: -776 bytes (bma=7 phl=100)
-08:47:12.775 [VRB] [PATH] REQ dst=df3a673b (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:47:12.777 [VRB] [HEAP-TEL] inbound: -836 bytes (heap=162952 pin=305 bma=7 phl=100 lt=2 revr=3)
-08:47:12.798 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=183 type=1 ctx=0 hdr=1 dstt=0 hops=3 dst=4c1503d8 ref=4c1503d8 (BLACKLISTED) tid=5a94e5d8
-08:47:12.800 [VRB] [PKT] DROP boundary dst=4c1503d8 ref=4c1503d8 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:47:13.297 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=a1f39935 (WHITELISTED) tid=none
-08:47:13.298 [VRB] [HEAP-TEL] boundary: -788 bytes (bma=7 phl=100)
-08:47:13.300 [VRB] [PATH] REQ dst=a1f39935 (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:47:13.302 [VRB] [HEAP-TEL] inbound: -840 bytes (heap=162780 pin=307 bma=7 phl=100 lt=2 revr=3)
-08:47:13.522 [VRB] [HEAP-TEL] jobs: 316 bytes (heap=163908)
-08:47:13.730 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=236 type=1 ctx=0 hdr=1 dstt=0 hops=4 dst=3578ecb9 ref=3578ecb9 (BLACKLISTED) tid=5a94e5d8
-08:47:13.732 [VRB] [PKT] DROP boundary dst=3578ecb9 ref=3578ecb9 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:47:14.427 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=201 type=1 ctx=0 hdr=1 dstt=0 hops=4 dst=185a5ffd ref=185a5ffd (BLACKLISTED) tid=682e34ed
-08:47:14.428 [VRB] [PKT] DROP boundary dst=185a5ffd ref=185a5ffd (BLACKLISTED) type=1 ctx=0 hdr=1
-08:47:14.434 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=236 type=1 ctx=0 hdr=1 dstt=0 hops=5 dst=3578ecb9 ref=3578ecb9 (BLACKLISTED) tid=682e34ed
-08:47:14.436 [VRB] [PKT] DROP boundary dst=3578ecb9 ref=3578ecb9 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:47:15.758 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=e785e3ce (WHITELISTED) tid=none
-08:47:15.759 [VRB] [HEAP-TEL] boundary: -768 bytes (bma=7 phl=100)
-08:47:15.761 [VRB] [PATH] REQ dst=e785e3ce (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:47:15.763 [VRB] [HEAP-TEL] inbound: -820 bytes (heap=162656 pin=311 bma=7 phl=100 lt=2 revr=3)
-08:47:15.860 [VRB] mem_free: 163892 (53%) [-2384] flash_free: 3518464 (99%) [0] paths: 4 dsts: 5 revr: 3 annc: 0 held: 0
-08:47:15.861 [VRB] preqs: 2 dpreqs: 0 ppreqs: 0 dprt: 32 cdsts: 2 chshs: 2
-08:47:15.862 [VRB] phl: 100 rcp: 0 lt: 2 pl: 0 al: 0 tun: 0
-08:47:15.863 [VRB] bla: 2 bma: 7
-08:47:15.864 [VRB] pin: 311 pout: 15 padd: 4 dpr: 2 ikd: 5 ia: 0
-
-08:47:15.865 [VRB] [HEAP-TEL] jobs: 156 bytes (heap=163892)
-08:47:15.998 [VRB] [PKT] IN iface=Interface[LocalTcpInterface] sz=99 type=0 ctx=252 hdr=0 dstt=3 hops=1 dst=0d810efb ref=0d810efb (WHITELISTED) tid=none
-08:47:16.000 [VRB] [HEAP-TEL] boundary: -684 bytes (bma=7 phl=100)
-08:47:16.001 [VRB] [LINK] XPORT pkt=0d810efb (WHITELISTED) type=0 ctx=252 hops=0 recv=Interface[LocalTcpInterface] entry_recv=Interface[LocalTcpInterface] entry_out=Interface[BackboneInterface1] rem=2 taken=0 val=1
-08:47:16.003 [VRB] [LINK] FWD dst=0d810efb (WHITELISTED) to=Interface[BackboneInterface1] size=99
-08:47:16.007 [VRB] [HEAP-TEL] inbound: -2452 bytes (heap=160964 pin=312 bma=7 phl=100 lt=2 revr=3)
-08:47:16.010 [VRB] [PKT] IN iface=Interface[LocalTcpInterface] sz=51 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=1c1db988 (WHITELISTED) tid=none
-08:47:16.012 [VRB] [HEAP-TEL] boundary: -780 bytes (bma=8 phl=100)
-08:47:16.014 [VRB] [PATH] REQ dst=1c1db988 (WHITELISTED) from=Interface[LocalTcpInterface] local=1 sz=32
-08:47:16.018 [VRB] [LoRa] TX 67 bytes
-08:47:16.030 [VRB] [HEAP-TEL] inbound: -4348 bytes (heap=157548 pin=313 bma=8 phl=100 lt=2 revr=3)
-08:47:16.116 [VRB] [HEAP-TEL] jobs: 160 bytes (heap=160216)
-08:47:16.237 [VRB] [LoRa] TXSTART 67 bytes
-[Boundary] TXCFG f=914875000 sf=10 bw=4 cr=1 ldro=0 pre=18 hdr=0 len=68 crc=1 iq=0 txp=19
-[Boundary] TXDONE irq=0001 timeout=0 pa=1
-08:47:17.106 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=306 type=1 ctx=0 hdr=1 dstt=0 hops=4 dst=8cb2ac8e ref=8cb2ac8e (BLACKLISTED) tid=682e34ed
-08:47:17.107 [VRB] [PKT] DROP boundary dst=8cb2ac8e ref=8cb2ac8e (BLACKLISTED) type=1 ctx=0 hdr=1
-08:47:17.115 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=315 type=1 ctx=0 hdr=1 dstt=0 hops=2 dst=cc055cd7 ref=cc055cd7 (BLACKLISTED) tid=682e34ed
-08:47:17.116 [VRB] [PKT] DROP boundary dst=cc055cd7 ref=cc055cd7 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:47:17.125 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=214 type=1 ctx=0 hdr=1 dstt=0 hops=3 dst=f8519c63 ref=f8519c63 (BLACKLISTED) tid=5a94e5d8
-08:47:17.126 [VRB] [PKT] DROP boundary dst=f8519c63 ref=f8519c63 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:47:17.134 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=306 type=1 ctx=0 hdr=1 dstt=0 hops=4 dst=8cb2ac8e ref=8cb2ac8e (BLACKLISTED) tid=5a94e5d8
-08:47:17.135 [VRB] [PKT] DROP boundary dst=8cb2ac8e ref=8cb2ac8e (BLACKLISTED) type=1 ctx=0 hdr=1
-08:47:17.141 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=200 type=1 ctx=11 hdr=1 dstt=0 hops=79 dst=1c1db988 ref=1c1db988 (WHITELISTED) tid=5a94e5d8
-08:47:17.142 [VRB] [HEAP-TEL] boundary: -864 bytes (bma=8 phl=100)
-08:47:17.232 [VRB] [ANNC] IN dst=1c1db988 (WHITELISTED) valid=1 ctx=11 hops=79 iface=Interface[BackboneInterface3] data=165
-08:47:17.244 [VRB] [PATH] RESP dst=1c1db988 (WHITELISTED) hops=79 to=Interface[LocalTcpInterface] local=0
-08:47:17.247 [VRB] [PATH] STORED dst=1c1db988 (WHITELISTED) hops=79 iface=Interface[BackboneInterface3] paths=5 bla=2
-08:47:17.249 [VRB] [HEAP-TEL] inbound: -2008 bytes (heap=160956 pin=318 bma=8 phl=100 lt=2 revr=3)
-08:47:17.286 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=29b8fc2f (WHITELISTED) tid=none
-08:47:17.288 [VRB] [HEAP-TEL] boundary: -748 bytes (bma=8 phl=100)
-08:47:17.290 [VRB] [PATH] REQ dst=29b8fc2f (WHITELISTED) from=Interface[BackboneInterface3] local=0 sz=48
-08:47:17.292 [VRB] [HEAP-TEL] inbound: -768 bytes (heap=160736 pin=319 bma=8 phl=100 lt=2 revr=3)
-08:47:17.502 [VRB] [HEAP-TEL] jobs: 156 bytes (heap=161568)
-08:47:17.569 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=200 type=1 ctx=11 hdr=1 dstt=0 hops=31 dst=1c1db988 ref=1c1db988 (WHITELISTED) tid=682e34ed
-08:47:17.571 [VRB] [HEAP-TEL] boundary: -872 bytes (bma=8 phl=100)
-08:47:17.661 [VRB] [ANNC] IN dst=1c1db988 (WHITELISTED) valid=1 ctx=11 hops=31 iface=Interface[BackboneInterface1] data=165
-08:47:17.662 [VRB] [HEAP-TEL] inbound: -456 bytes (heap=160720 pin=320 bma=8 phl=100 lt=2 revr=3)
-08:47:17.669 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=214 type=1 ctx=0 hdr=1 dstt=0 hops=3 dst=f8519c63 ref=f8519c63 (BLACKLISTED) tid=682e34ed
-08:47:17.671 [VRB] [PKT] DROP boundary dst=f8519c63 ref=f8519c63 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:47:17.676 [VRB] [PKT] IN iface=Interface[LocalTcpInterface] sz=102 type=2 ctx=0 hdr=1 dstt=0 hops=1 dst=1c1db988 ref=1c1db988 (WHITELISTED) tid=7e9c03b9
-08:47:17.677 [VRB] [HEAP-TEL] boundary: -772 bytes (bma=8 phl=100)
-08:47:17.680 [VRB] [LINK] CREATE dst=1c1db988 (WHITELISTED) link=5b81fe86 rem=79 recv=Interface[LocalTcpInterface] out=Interface[BackboneInterface3] lt=3
-08:47:17.684 [VRB] [HEAP-TEL] inbound: -2900 bytes (heap=158836 pin=322 bma=8 phl=100 lt=3 revr=3)
-08:47:18.010 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=196 type=1 ctx=0 hdr=1 dstt=0 hops=10 dst=099c6cb5 ref=099c6cb5 (BLACKLISTED) tid=5a94e5d8
-08:47:18.011 [VRB] [PKT] DROP boundary dst=099c6cb5 ref=099c6cb5 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:47:18.624 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=207 type=1 ctx=0 hdr=1 dstt=0 hops=3 dst=6a100bfc ref=6a100bfc (BLACKLISTED) tid=682e34ed
-08:47:18.626 [VRB] [PKT] DROP boundary dst=6a100bfc ref=6a100bfc (BLACKLISTED) type=1 ctx=0 hdr=1
-08:47:21.082 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=202 type=1 ctx=0 hdr=1 dstt=0 hops=2 dst=e7a3e280 ref=e7a3e280 (BLACKLISTED) tid=5a94e5d8
-08:47:21.083 [VRB] [PKT] DROP boundary dst=e7a3e280 ref=e7a3e280 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:47:24.359 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=236 type=1 ctx=0 hdr=1 dstt=0 hops=5 dst=3578ecb9 ref=3578ecb9 (BLACKLISTED) tid=5a94e5d8
-08:47:24.360 [VRB] [PKT] DROP boundary dst=3578ecb9 ref=3578ecb9 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:47:24.871 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=236 type=1 ctx=0 hdr=1 dstt=0 hops=5 dst=3578ecb9 ref=3578ecb9 (BLACKLISTED) tid=682e34ed
-08:47:24.872 [VRB] [PKT] DROP boundary dst=3578ecb9 ref=3578ecb9 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:47:25.820 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=d029edb5 (WHITELISTED) tid=none
-08:47:25.822 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=8 phl=100)
-08:47:25.824 [VRB] [PATH] REQ dst=d029edb5 (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:47:25.826 [VRB] [HEAP-TEL] inbound: -916 bytes (heap=160268 pin=328 bma=8 phl=100 lt=3 revr=3)
-08:47:25.990 [VRB] [HEAP-TEL] jobs: 156 bytes (heap=161588)
-08:47:27.943 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=3a8ba907 (WHITELISTED) tid=none
-08:47:27.944 [VRB] [HEAP-TEL] boundary: -768 bytes (bma=8 phl=100)
-08:47:27.946 [VRB] [PATH] REQ dst=3a8ba907 (WHITELISTED) from=Interface[BackboneInterface3] local=0 sz=48
-08:47:27.948 [VRB] [HEAP-TEL] inbound: -812 bytes (heap=160372 pin=329 bma=8 phl=100 lt=3 revr=3)
-08:47:28.057 [VRB] [HEAP-TEL] jobs: 164 bytes (heap=161600)
-08:47:28.578 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=236 type=1 ctx=0 hdr=1 dstt=0 hops=4 dst=64c05e87 ref=64c05e87 (BLACKLISTED) tid=5a94e5d8
-08:47:28.580 [VRB] [PKT] DROP boundary dst=64c05e87 ref=64c05e87 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:47:29.172 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=207 type=1 ctx=0 hdr=1 dstt=0 hops=1 dst=d251bfd8 ref=d251bfd8 (BLACKLISTED) tid=682e34ed
-08:47:29.173 [VRB] [PKT] DROP boundary dst=d251bfd8 ref=d251bfd8 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:47:30.200 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=183 type=1 ctx=0 hdr=1 dstt=0 hops=4 dst=9f1f07c2 ref=9f1f07c2 (BLACKLISTED) tid=682e34ed
-08:47:30.202 [VRB] [PKT] DROP boundary dst=9f1f07c2 ref=9f1f07c2 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:47:30.209 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=236 type=1 ctx=0 hdr=1 dstt=0 hops=6 dst=64c05e87 ref=64c05e87 (BLACKLISTED) tid=682e34ed
-08:47:30.211 [VRB] [PKT] DROP boundary dst=64c05e87 ref=64c05e87 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:47:30.646 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=202 type=1 ctx=0 hdr=1 dstt=0 hops=2 dst=95ca807f ref=95ca807f (BLACKLISTED) tid=5a94e5d8
-08:47:30.647 [VRB] [PKT] DROP boundary dst=95ca807f ref=95ca807f (BLACKLISTED) type=1 ctx=0 hdr=1
-08:47:31.218 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=1a63d1c2 (WHITELISTED) tid=none
-08:47:31.219 [VRB] [HEAP-TEL] boundary: -776 bytes (bma=8 phl=100)
-08:47:31.221 [VRB] [PATH] REQ dst=1a63d1c2 (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:47:31.223 [VRB] [HEAP-TEL] inbound: -932 bytes (heap=160252 pin=335 bma=8 phl=100 lt=3 revr=3)
-08:47:31.409 [VRB] [HEAP-TEL] jobs: 156 bytes (heap=161600)
-08:47:31.527 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=227 type=1 ctx=0 hdr=1 dstt=0 hops=4 dst=a2eda595 ref=a2eda595 (BLACKLISTED) tid=682e34ed
-08:47:31.529 [VRB] [PKT] DROP boundary dst=a2eda595 ref=a2eda595 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:47:32.755 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=e785e3ce (WHITELISTED) tid=none
-08:47:32.757 [VRB] [HEAP-TEL] boundary: -780 bytes (bma=8 phl=100)
-08:47:32.759 [VRB] [PATH] REQ dst=e785e3ce (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:47:32.761 [VRB] [HEAP-TEL] inbound: -792 bytes (heap=160660 pin=337 bma=8 phl=100 lt=3 revr=3)
-08:47:32.765 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=21c3b0d4 (WHITELISTED) tid=none
-08:47:32.766 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=8 phl=100)
-08:47:32.768 [VRB] [PATH] REQ dst=21c3b0d4 (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:47:32.770 [VRB] [HEAP-TEL] inbound: -784 bytes (heap=160512 pin=338 bma=8 phl=100 lt=3 revr=3)
-08:47:32.785 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=5e6339ae (WHITELISTED) tid=none
-08:47:32.787 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=8 phl=100)
-08:47:32.789 [VRB] [PATH] REQ dst=5e6339ae (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:47:32.791 [VRB] [HEAP-TEL] inbound: -800 bytes (heap=160092 pin=339 bma=8 phl=100 lt=3 revr=3)
-08:47:32.961 [VRB] [HEAP-TEL] jobs: 476 bytes (heap=161616)
-08:47:32.967 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=183 type=1 ctx=0 hdr=1 dstt=0 hops=4 dst=282a64d4 ref=282a64d4 (BLACKLISTED) tid=5a94e5d8
-08:47:32.968 [VRB] [PKT] DROP boundary dst=282a64d4 ref=282a64d4 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:47:33.580 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=183 type=1 ctx=0 hdr=1 dstt=0 hops=4 dst=18e7c0ba ref=18e7c0ba (BLACKLISTED) tid=682e34ed
-08:47:33.582 [VRB] [PKT] DROP boundary dst=18e7c0ba ref=18e7c0ba (BLACKLISTED) type=1 ctx=0 hdr=1
-08:47:33.588 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=183 type=1 ctx=0 hdr=1 dstt=0 hops=4 dst=282a64d4 ref=282a64d4 (BLACKLISTED) tid=682e34ed
-08:47:33.589 [VRB] [PKT] DROP boundary dst=282a64d4 ref=282a64d4 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:47:33.922 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=183 type=1 ctx=0 hdr=1 dstt=0 hops=4 dst=18e7c0ba ref=18e7c0ba (BLACKLISTED) tid=5a94e5d8
-08:47:33.924 [VRB] [PKT] DROP boundary dst=18e7c0ba ref=18e7c0ba (BLACKLISTED) type=1 ctx=0 hdr=1
-08:47:33.930 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=236 type=1 ctx=0 hdr=1 dstt=0 hops=4 dst=3578ecb9 ref=3578ecb9 (BLACKLISTED) tid=5a94e5d8
-08:47:33.932 [VRB] [PKT] DROP boundary dst=3578ecb9 ref=3578ecb9 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:47:34.703 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=236 type=1 ctx=0 hdr=1 dstt=0 hops=5 dst=3578ecb9 ref=3578ecb9 (BLACKLISTED) tid=682e34ed
-08:47:34.705 [VRB] [PKT] DROP boundary dst=3578ecb9 ref=3578ecb9 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:47:34.711 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=208 type=1 ctx=0 hdr=1 dstt=0 hops=4 dst=5b51f276 ref=5b51f276 (BLACKLISTED) tid=682e34ed
-08:47:34.712 [VRB] [PKT] DROP boundary dst=5b51f276 ref=5b51f276 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:47:34.916 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=208 type=1 ctx=0 hdr=1 dstt=0 hops=4 dst=5b51f276 ref=5b51f276 (BLACKLISTED) tid=5a94e5d8
-08:47:34.917 [VRB] [PKT] DROP boundary dst=5b51f276 ref=5b51f276 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:47:35.526 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=20 type=0 ctx=250 hdr=0 dstt=3 hops=2 dst=57c25ccc ref=57c25ccc (WHITELISTED) tid=none
-08:47:35.527 [VRB] [HEAP-TEL] boundary: -620 bytes (bma=8 phl=100)
-08:47:35.528 [VRB] [LINK] XPORT pkt=57c25ccc (WHITELISTED) type=0 ctx=250 hops=2 recv=Interface[BackboneInterface3] entry_recv=Interface[BackboneInterface3] entry_out=Interface[LocalTcpInterface] rem=0 taken=2 val=1
-08:47:35.530 [VRB] [LINK] FWD dst=57c25ccc (WHITELISTED) to=Interface[LocalTcpInterface] size=20
-08:47:35.534 [VRB] [HEAP-TEL] inbound: -2108 bytes (heap=159120 pin=348 bma=8 phl=100 lt=3 revr=3)
-08:47:35.545 [VRB] [PKT] IN iface=Interface[LocalTcpInterface] sz=20 type=0 ctx=250 hdr=0 dstt=3 hops=1 dst=57c25ccc ref=57c25ccc (WHITELISTED) tid=none
-08:47:35.546 [VRB] [HEAP-TEL] boundary: -620 bytes (bma=8 phl=100)
-08:47:35.547 [VRB] [LINK] XPORT pkt=57c25ccc (WHITELISTED) type=0 ctx=250 hops=0 recv=Interface[LocalTcpInterface] entry_recv=Interface[BackboneInterface3] entry_out=Interface[LocalTcpInterface] rem=0 taken=2 val=1
-08:47:35.549 [VRB] [LINK] FWD dst=57c25ccc (WHITELISTED) to=Interface[BackboneInterface3] size=20
-08:47:35.553 [VRB] [HEAP-TEL] inbound: -2096 bytes (heap=159124 pin=349 bma=8 phl=100 lt=3 revr=3)
-08:47:37.778 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=27c7b2d8 (WHITELISTED) tid=none
-08:47:37.781 [VRB] [HEAP-TEL] boundary: -644 bytes (bma=8 phl=100)
-08:47:37.783 [VRB] [PATH] REQ dst=27c7b2d8 (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:47:37.785 [VRB] [HEAP-TEL] inbound: -652 bytes (heap=160612 pin=350 bma=8 phl=100 lt=3 revr=3)
-08:47:37.789 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=df3a673b (WHITELISTED) tid=none
-08:47:37.790 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=8 phl=100)
-08:47:37.792 [VRB] [PATH] REQ dst=df3a673b (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:47:37.794 [VRB] [HEAP-TEL] inbound: -804 bytes (heap=160452 pin=351 bma=8 phl=100 lt=3 revr=3)
-08:47:37.800 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=208 type=1 ctx=0 hdr=1 dstt=0 hops=3 dst=210ccbfa ref=210ccbfa (BLACKLISTED) tid=682e34ed
-08:47:37.802 [VRB] [PKT] DROP boundary dst=210ccbfa ref=210ccbfa (BLACKLISTED) type=1 ctx=0 hdr=1
-08:47:38.698 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=20f29e88 (WHITELISTED) tid=none
-08:47:38.699 [VRB] [HEAP-TEL] boundary: -744 bytes (bma=8 phl=100)
-08:47:38.701 [VRB] [PATH] REQ dst=20f29e88 (WHITELISTED) from=Interface[BackboneInterface3] local=0 sz=48
-08:47:38.703 [VRB] [HEAP-TEL] inbound: -900 bytes (heap=160228 pin=353 bma=8 phl=100 lt=3 revr=3)
-08:47:38.915 [VRB] [HEAP-TEL] jobs: 468 bytes (heap=161584)
-08:47:39.309 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=918762ea (WHITELISTED) tid=none
-08:47:39.310 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=8 phl=100)
-08:47:39.312 [VRB] [PATH] REQ dst=918762ea (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:47:39.314 [VRB] [HEAP-TEL] inbound: -804 bytes (heap=160636 pin=354 bma=8 phl=100 lt=3 revr=3)
-08:47:39.431 [VRB] [HEAP-TEL] jobs: 156 bytes (heap=161572)
-08:47:39.720 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=db57ad2e (WHITELISTED) tid=none
-08:47:39.722 [VRB] [HEAP-TEL] boundary: -748 bytes (bma=8 phl=100)
-08:47:39.724 [VRB] [PATH] REQ dst=db57ad2e (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:47:39.726 [VRB] [HEAP-TEL] inbound: -776 bytes (heap=160652 pin=355 bma=8 phl=100 lt=3 revr=3)
-08:47:39.948 [VRB] [HEAP-TEL] jobs: 156 bytes (heap=161588)
-08:47:41.560 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=8c2879b5 (WHITELISTED) tid=none
-08:47:41.561 [VRB] [HEAP-TEL] boundary: -748 bytes (bma=8 phl=100)
-08:47:41.563 [VRB] [PATH] REQ dst=8c2879b5 (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:47:41.565 [VRB] [HEAP-TEL] inbound: -904 bytes (heap=160540 pin=356 bma=8 phl=100 lt=3 revr=3)
-08:47:41.749 [VRB] [HEAP-TEL] jobs: 156 bytes (heap=161588)
-08:47:43.615 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=183 type=1 ctx=0 hdr=1 dstt=0 hops=2 dst=c3d2d2e8 ref=c3d2d2e8 (BLACKLISTED) tid=5a94e5d8
-08:47:43.616 [VRB] [PKT] DROP boundary dst=c3d2d2e8 ref=c3d2d2e8 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:47:44.123 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=236 type=1 ctx=0 hdr=1 dstt=0 hops=5 dst=3578ecb9 ref=3578ecb9 (BLACKLISTED) tid=682e34ed
-08:47:44.125 [VRB] [PKT] DROP boundary dst=3578ecb9 ref=3578ecb9 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:47:44.638 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=236 type=1 ctx=0 hdr=1 dstt=0 hops=4 dst=3578ecb9 ref=3578ecb9 (BLACKLISTED) tid=5a94e5d8
-08:47:44.640 [VRB] [PKT] DROP boundary dst=3578ecb9 ref=3578ecb9 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:47:45.674 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=206 type=1 ctx=0 hdr=1 dstt=0 hops=3 dst=0def0aff ref=0def0aff (BLACKLISTED) tid=5a94e5d8
-08:47:45.675 [VRB] [PKT] DROP boundary dst=0def0aff ref=0def0aff (BLACKLISTED) type=1 ctx=0 hdr=1
-08:47:46.069 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=206 type=1 ctx=0 hdr=1 dstt=0 hops=2 dst=0def0aff ref=0def0aff (BLACKLISTED) tid=682e34ed
-08:47:46.071 [VRB] [PKT] DROP boundary dst=0def0aff ref=0def0aff (BLACKLISTED) type=1 ctx=0 hdr=1
-08:47:48.014 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=0fff36cc (WHITELISTED) tid=none
-08:47:48.016 [VRB] [HEAP-TEL] boundary: -748 bytes (bma=8 phl=100)
-08:47:48.018 [VRB] [PATH] REQ dst=0fff36cc (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:47:48.020 [VRB] [HEAP-TEL] inbound: -788 bytes (heap=160356 pin=362 bma=8 phl=100 lt=3 revr=3)
-08:47:48.227 [VRB] [HEAP-TEL] jobs: 156 bytes (heap=161592)
-08:47:50.777 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=995cc385 (WHITELISTED) tid=none
-08:47:50.778 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=8 phl=100)
-08:47:50.780 [VRB] [PATH] REQ dst=995cc385 (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:47:50.782 [VRB] [HEAP-TEL] inbound: -808 bytes (heap=160340 pin=363 bma=8 phl=100 lt=3 revr=3)
-08:47:50.786 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=826399ff (WHITELISTED) tid=none
-08:47:50.787 [VRB] [HEAP-TEL] boundary: -748 bytes (bma=8 phl=100)
-08:47:50.789 [VRB] [PATH] REQ dst=826399ff (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:47:50.791 [VRB] [HEAP-TEL] inbound: -796 bytes (heap=160180 pin=364 bma=8 phl=100 lt=3 revr=3)
-08:47:50.825 [VRB] [HEAP-TEL] jobs: 312 bytes (heap=161572)
-08:47:51.904 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=231 type=1 ctx=0 hdr=1 dstt=0 hops=2 dst=d010ea44 ref=d010ea44 (BLACKLISTED) tid=5a94e5d8
-08:47:51.906 [VRB] [PKT] DROP boundary dst=d010ea44 ref=d010ea44 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:47:52.519 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=231 type=1 ctx=0 hdr=1 dstt=0 hops=4 dst=d010ea44 ref=d010ea44 (BLACKLISTED) tid=682e34ed
-08:47:52.521 [VRB] [PKT] DROP boundary dst=d010ea44 ref=d010ea44 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:47:52.825 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=5e6339ae (WHITELISTED) tid=none
-08:47:52.826 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=8 phl=100)
-08:47:52.828 [VRB] [PATH] REQ dst=5e6339ae (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:47:52.830 [VRB] [HEAP-TEL] inbound: -912 bytes (heap=160164 pin=367 bma=8 phl=100 lt=3 revr=3)
-08:47:52.836 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=189 type=1 ctx=0 hdr=1 dstt=0 hops=4 dst=0ca878b3 ref=0ca878b3 (BLACKLISTED) tid=5a94e5d8
-08:47:52.838 [VRB] [PKT] DROP boundary dst=0ca878b3 ref=0ca878b3 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:47:53.339 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=a1f39935 (WHITELISTED) tid=none
-08:47:53.340 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=8 phl=100)
-08:47:53.342 [VRB] [PATH] REQ dst=a1f39935 (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:47:53.344 [VRB] [HEAP-TEL] inbound: -916 bytes (heap=160056 pin=369 bma=8 phl=100 lt=3 revr=3)
-08:47:53.373 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=189 type=1 ctx=0 hdr=1 dstt=0 hops=5 dst=0ca878b3 ref=0ca878b3 (BLACKLISTED) tid=682e34ed
-08:47:53.375 [VRB] [PKT] DROP boundary dst=0ca878b3 ref=0ca878b3 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:47:53.394 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=183 type=1 ctx=0 hdr=1 dstt=0 hops=3 dst=68225118 ref=68225118 (BLACKLISTED) tid=682e34ed
-08:47:53.396 [VRB] [PKT] DROP boundary dst=68225118 ref=68225118 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:47:54.297 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=219 type=1 ctx=0 hdr=1 dstt=0 hops=2 dst=5203dee9 ref=5203dee9 (BLACKLISTED) tid=5a94e5d8
-08:47:54.298 [VRB] [PKT] DROP boundary dst=5203dee9 ref=5203dee9 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:47:54.570 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=8ebd8d26 (WHITELISTED) tid=none
-08:47:54.572 [VRB] [HEAP-TEL] boundary: -748 bytes (bma=8 phl=100)
-08:47:54.574 [VRB] [PATH] REQ dst=8ebd8d26 (WHITELISTED) from=Interface[BackboneInterface3] local=0 sz=48
-08:47:54.576 [VRB] [HEAP-TEL] inbound: -800 bytes (heap=160316 pin=373 bma=8 phl=100 lt=3 revr=3)
-08:47:54.714 [VRB] [HEAP-TEL] jobs: 468 bytes (heap=161564)
-08:47:54.813 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=219 type=1 ctx=0 hdr=1 dstt=0 hops=4 dst=5203dee9 ref=5203dee9 (BLACKLISTED) tid=682e34ed
-08:47:54.814 [VRB] [PKT] DROP boundary dst=5203dee9 ref=5203dee9 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:47:55.590 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=191 type=1 ctx=0 hdr=1 dstt=0 hops=3 dst=9a0fc88a ref=9a0fc88a (BLACKLISTED) tid=682e34ed
-08:47:55.592 [VRB] [PKT] DROP boundary dst=9a0fc88a ref=9a0fc88a (BLACKLISTED) type=1 ctx=0 hdr=1
-08:47:56.612 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=03f2cec3 (WHITELISTED) tid=none
-08:47:56.614 [VRB] [HEAP-TEL] boundary: -748 bytes (bma=8 phl=100)
-08:47:56.616 [VRB] [PATH] REQ dst=03f2cec3 (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:47:56.618 [VRB] [HEAP-TEL] inbound: -904 bytes (heap=160224 pin=376 bma=8 phl=100 lt=3 revr=3)
-08:47:56.782 [VRB] [HEAP-TEL] jobs: 156 bytes (heap=161564)
-08:47:57.335 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=ae7832a0 (WHITELISTED) tid=none
-08:47:57.337 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=8 phl=100)
-08:47:57.339 [VRB] [PATH] REQ dst=ae7832a0 (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:47:57.341 [VRB] [HEAP-TEL] inbound: -804 bytes (heap=160284 pin=377 bma=8 phl=100 lt=3 revr=3)
-08:47:57.345 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=c0485172 (WHITELISTED) tid=none
-08:47:57.346 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=8 phl=100)
-08:47:57.348 [VRB] [PATH] REQ dst=c0485172 (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:47:57.350 [VRB] [HEAP-TEL] inbound: -784 bytes (heap=160136 pin=378 bma=8 phl=100 lt=3 revr=3)
-08:47:57.354 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=ae7832a0 (WHITELISTED) tid=none
-08:47:57.355 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=8 phl=100)
-08:47:57.357 [VRB] [PATH] REQ dst=ae7832a0 (WHITELISTED) from=Interface[BackboneInterface3] local=0 sz=48
-08:47:57.358 [VRB] [HEAP-TEL] inbound: -656 bytes (heap=160164 pin=379 bma=8 phl=100 lt=3 revr=3)
-08:47:57.565 [VRB] [HEAP-TEL] jobs: 316 bytes (heap=161560)
-08:47:59.586 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=a3dfea28 (WHITELISTED) tid=none
-08:47:59.587 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=8 phl=100)
-08:47:59.589 [VRB] [PATH] REQ dst=a3dfea28 (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:47:59.591 [VRB] [HEAP-TEL] inbound: -920 bytes (heap=160496 pin=380 bma=8 phl=100 lt=3 revr=3)
-08:47:59.813 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=d745ac5c (WHITELISTED) tid=none
-08:47:59.814 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=8 phl=100)
-08:47:59.816 [VRB] [PATH] REQ dst=d745ac5c (WHITELISTED) from=Interface[BackboneInterface3] local=0 sz=48
-08:47:59.818 [VRB] [HEAP-TEL] inbound: -808 bytes (heap=160608 pin=381 bma=8 phl=100 lt=3 revr=3)
-08:47:59.883 [VRB] [HEAP-TEL] jobs: 156 bytes (heap=161412)
-08:48:00.512 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=225 type=1 ctx=0 hdr=1 dstt=0 hops=2 dst=3f48a7fb ref=3f48a7fb (BLACKLISTED) tid=5a94e5d8
-08:48:00.514 [VRB] [PKT] DROP boundary dst=3f48a7fb ref=3f48a7fb (BLACKLISTED) type=1 ctx=0 hdr=1
-08:48:01.875 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=194 type=1 ctx=0 hdr=1 dstt=0 hops=6 dst=b3fea2ea ref=b3fea2ea (BLACKLISTED) tid=682e34ed
-08:48:01.876 [VRB] [PKT] DROP boundary dst=b3fea2ea ref=b3fea2ea (BLACKLISTED) type=1 ctx=0 hdr=1
-08:48:03.501 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=440 type=1 ctx=0 hdr=1 dstt=0 hops=3 dst=4dd9ed5f ref=4dd9ed5f (BLACKLISTED) tid=5a94e5d8
-08:48:03.502 [VRB] [PKT] DROP boundary dst=4dd9ed5f ref=4dd9ed5f (BLACKLISTED) type=1 ctx=0 hdr=1
-08:48:03.887 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=224 type=1 ctx=0 hdr=1 dstt=0 hops=3 dst=95bd2c05 ref=95bd2c05 (BLACKLISTED) tid=682e34ed
-08:48:03.889 [VRB] [PKT] DROP boundary dst=95bd2c05 ref=95bd2c05 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:48:04.808 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=224 type=1 ctx=0 hdr=1 dstt=0 hops=3 dst=95bd2c05 ref=95bd2c05 (BLACKLISTED) tid=5a94e5d8
-08:48:04.809 [VRB] [PKT] DROP boundary dst=95bd2c05 ref=95bd2c05 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:48:05.734 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=219 type=1 ctx=0 hdr=1 dstt=0 hops=4 dst=5203dee9 ref=5203dee9 (BLACKLISTED) tid=5a94e5d8
-08:48:05.735 [VRB] [PKT] DROP boundary dst=5203dee9 ref=5203dee9 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:48:05.847 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=235 type=1 ctx=0 hdr=1 dstt=0 hops=2 dst=72d43bc8 ref=72d43bc8 (BLACKLISTED) tid=682e34ed
-08:48:05.848 [VRB] [PKT] DROP boundary dst=72d43bc8 ref=72d43bc8 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:48:06.758 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=235 type=1 ctx=0 hdr=1 dstt=0 hops=4 dst=72d43bc8 ref=72d43bc8 (BLACKLISTED) tid=5a94e5d8
-08:48:06.760 [VRB] [PKT] DROP boundary dst=72d43bc8 ref=72d43bc8 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:48:07.784 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=271 type=1 ctx=0 hdr=1 dstt=0 hops=4 dst=8f228b9f ref=8f228b9f (BLACKLISTED) tid=5a94e5d8
-08:48:07.785 [VRB] [PKT] DROP boundary dst=8f228b9f ref=8f228b9f (BLACKLISTED) type=1 ctx=0 hdr=1
-08:48:07.981 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=24893ab2 (WHITELISTED) tid=none
-08:48:07.982 [VRB] [HEAP-TEL] boundary: -744 bytes (bma=8 phl=100)
-08:48:07.984 [VRB] [PATH] REQ dst=24893ab2 (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:48:07.986 [VRB] [HEAP-TEL] inbound: -792 bytes (heap=160620 pin=391 bma=8 phl=100 lt=3 revr=3)
-08:48:07.988 [VRB] [HEAP-TEL] jobs: 156 bytes (heap=161556)
-08:48:08.030 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=271 type=1 ctx=0 hdr=1 dstt=0 hops=6 dst=8f228b9f ref=8f228b9f (BLACKLISTED) tid=682e34ed
-08:48:08.031 [VRB] [PKT] DROP boundary dst=8f228b9f ref=8f228b9f (BLACKLISTED) type=1 ctx=0 hdr=1
-08:48:08.040 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=202 type=1 ctx=0 hdr=1 dstt=0 hops=5 dst=413469d1 ref=413469d1 (BLACKLISTED) tid=682e34ed
-08:48:08.041 [VRB] [PKT] DROP boundary dst=413469d1 ref=413469d1 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:48:09.312 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=f5122ab9 (WHITELISTED) tid=none
-08:48:09.313 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=8 phl=100)
-08:48:09.315 [VRB] [PATH] REQ dst=f5122ab9 (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:48:09.317 [VRB] [HEAP-TEL] inbound: -604 bytes (heap=160600 pin=394 bma=8 phl=100 lt=3 revr=3)
-08:48:09.321 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=34b2d5e6 (WHITELISTED) tid=none
-08:48:09.322 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=8 phl=100)
-08:48:09.324 [VRB] [PATH] REQ dst=34b2d5e6 (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:48:09.326 [VRB] [HEAP-TEL] inbound: -912 bytes (heap=160328 pin=395 bma=8 phl=100 lt=3 revr=3)
-08:48:09.532 [VRB] [HEAP-TEL] jobs: 316 bytes (heap=161540)
-08:48:10.030 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=204 type=1 ctx=0 hdr=1 dstt=0 hops=2 dst=af1ec912 ref=af1ec912 (BLACKLISTED) tid=5a94e5d8
-08:48:10.032 [VRB] [PKT] DROP boundary dst=af1ec912 ref=af1ec912 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:48:12.090 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=df3a673b (WHITELISTED) tid=none
-08:48:12.091 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=8 phl=100)
-08:48:12.093 [VRB] [PATH] REQ dst=df3a673b (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:48:12.095 [VRB] [HEAP-TEL] inbound: -920 bytes (heap=159956 pin=397 bma=8 phl=100 lt=3 revr=3)
-08:48:12.101 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=214 type=1 ctx=0 hdr=1 dstt=0 hops=3 dst=be84461d ref=be84461d (BLACKLISTED) tid=682e34ed
-08:48:12.103 [VRB] [PKT] DROP boundary dst=be84461d ref=be84461d (BLACKLISTED) type=1 ctx=0 hdr=1
-08:48:12.110 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=219 type=1 ctx=0 hdr=1 dstt=0 hops=4 dst=5203dee9 ref=5203dee9 (BLACKLISTED) tid=5a94e5d8
-08:48:12.111 [VRB] [PKT] DROP boundary dst=5203dee9 ref=5203dee9 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:48:13.004 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=a1f39935 (WHITELISTED) tid=none
-08:48:13.005 [VRB] [HEAP-TEL] boundary: -748 bytes (bma=8 phl=100)
-08:48:13.007 [VRB] [PATH] REQ dst=a1f39935 (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:48:13.009 [VRB] [HEAP-TEL] inbound: -784 bytes (heap=160176 pin=400 bma=8 phl=100 lt=3 revr=3)
-08:48:13.013 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=21ffe695 (WHITELISTED) tid=none
-08:48:13.014 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=8 phl=100)
-08:48:13.016 [VRB] [PATH] REQ dst=21ffe695 (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:48:13.018 [VRB] [HEAP-TEL] inbound: -908 bytes (heap=159904 pin=401 bma=8 phl=100 lt=3 revr=3)
-08:48:13.078 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=826399ff (WHITELISTED) tid=none
-08:48:13.079 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=8 phl=100)
-08:48:13.081 [VRB] [PATH] REQ dst=826399ff (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:48:13.083 [VRB] [HEAP-TEL] inbound: -908 bytes (heap=159680 pin=402 bma=8 phl=100 lt=3 revr=3)
-08:48:13.087 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=1a63d1c2 (WHITELISTED) tid=none
-08:48:13.088 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=8 phl=100)
-08:48:13.090 [VRB] [PATH] REQ dst=1a63d1c2 (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:48:13.092 [VRB] [HEAP-TEL] inbound: -788 bytes (heap=159644 pin=403 bma=8 phl=100 lt=3 revr=3)
-08:48:13.099 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=214 type=1 ctx=0 hdr=1 dstt=0 hops=4 dst=be84461d ref=be84461d (BLACKLISTED) tid=5a94e5d8
-08:48:13.100 [VRB] [PKT] DROP boundary dst=be84461d ref=be84461d (BLACKLISTED) type=1 ctx=0 hdr=1
-08:48:13.110 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=995cc385 (WHITELISTED) tid=none
-08:48:13.112 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=8 phl=100)
-08:48:13.114 [VRB] [PATH] REQ dst=995cc385 (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:48:13.116 [VRB] [HEAP-TEL] inbound: -916 bytes (heap=159408 pin=405 bma=8 phl=100 lt=3 revr=3)
-08:48:13.149 [VRB] [HEAP-TEL] jobs: 936 bytes (heap=161544)
-08:48:13.204 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=995cc385 (WHITELISTED) tid=none
-08:48:13.205 [VRB] [HEAP-TEL] boundary: -768 bytes (bma=8 phl=100)
-08:48:13.207 [VRB] [PATH] REQ dst=995cc385 (WHITELISTED) from=Interface[BackboneInterface3] local=0 sz=48
-08:48:13.209 [VRB] [HEAP-TEL] inbound: -816 bytes (heap=160288 pin=406 bma=8 phl=100 lt=3 revr=3)
-08:48:13.418 [VRB] [HEAP-TEL] jobs: 156 bytes (heap=161532)
-08:48:15.357 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=214 type=1 ctx=0 hdr=1 dstt=0 hops=3 dst=b06d4ab0 ref=b06d4ab0 (BLACKLISTED) tid=682e34ed
-08:48:15.359 [VRB] [PKT] DROP boundary dst=b06d4ab0 ref=b06d4ab0 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:48:15.365 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=183 type=1 ctx=0 hdr=1 dstt=0 hops=2 dst=28deb908 ref=28deb908 (BLACKLISTED) tid=682e34ed
-08:48:15.366 [VRB] [PKT] DROP boundary dst=28deb908 ref=28deb908 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:48:15.372 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=183 type=1 ctx=0 hdr=1 dstt=0 hops=2 dst=0a1b8c36 ref=0a1b8c36 (BLACKLISTED) tid=682e34ed
-08:48:15.373 [VRB] [PKT] DROP boundary dst=0a1b8c36 ref=0a1b8c36 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:48:15.379 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=183 type=1 ctx=0 hdr=1 dstt=0 hops=2 dst=28deb908 ref=28deb908 (BLACKLISTED) tid=5a94e5d8
-08:48:15.380 [VRB] [PKT] DROP boundary dst=28deb908 ref=28deb908 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:48:15.393 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=183 type=1 ctx=0 hdr=1 dstt=0 hops=2 dst=0a1b8c36 ref=0a1b8c36 (BLACKLISTED) tid=5a94e5d8
-08:48:15.394 [VRB] [PKT] DROP boundary dst=0a1b8c36 ref=0a1b8c36 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:48:15.416 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=196 type=1 ctx=0 hdr=1 dstt=0 hops=5 dst=4b7736c2 ref=4b7736c2 (BLACKLISTED) tid=5a94e5d8
-08:48:15.417 [VRB] [PKT] DROP boundary dst=4b7736c2 ref=4b7736c2 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:48:16.381 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=220 type=1 ctx=0 hdr=1 dstt=0 hops=5 dst=68178717 ref=68178717 (BLACKLISTED) tid=5a94e5d8
-08:48:16.382 [VRB] [PKT] DROP boundary dst=68178717 ref=68178717 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:48:16.390 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=220 type=1 ctx=0 hdr=1 dstt=0 hops=5 dst=68178717 ref=68178717 (BLACKLISTED) tid=682e34ed
-08:48:16.393 [VRB] [PKT] DROP boundary dst=68178717 ref=68178717 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:48:16.399 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=196 type=1 ctx=0 hdr=1 dstt=0 hops=5 dst=9bab5478 ref=9bab5478 (BLACKLISTED) tid=682e34ed
-08:48:16.401 [VRB] [PKT] DROP boundary dst=9bab5478 ref=9bab5478 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:48:16.407 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=196 type=1 ctx=0 hdr=1 dstt=0 hops=5 dst=9bab5478 ref=9bab5478 (BLACKLISTED) tid=5a94e5d8
-08:48:16.409 [VRB] [PKT] DROP boundary dst=9bab5478 ref=9bab5478 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:48:16.791 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=20 type=0 ctx=250 hdr=0 dstt=3 hops=2 dst=57c25ccc ref=57c25ccc (WHITELISTED) tid=none
-08:48:16.792 [VRB] [HEAP-TEL] boundary: -632 bytes (bma=8 phl=100)
-08:48:16.793 [VRB] [LINK] XPORT pkt=57c25ccc (WHITELISTED) type=0 ctx=250 hops=2 recv=Interface[BackboneInterface3] entry_recv=Interface[BackboneInterface3] entry_out=Interface[LocalTcpInterface] rem=0 taken=2 val=1
-08:48:16.795 [VRB] [LINK] FWD dst=57c25ccc (WHITELISTED) to=Interface[LocalTcpInterface] size=20
-08:48:16.799 [VRB] [HEAP-TEL] inbound: -2452 bytes (heap=158700 pin=417 bma=8 phl=100 lt=3 revr=3)
-08:48:16.833 [VRB] [PKT] IN iface=Interface[LocalTcpInterface] sz=20 type=0 ctx=250 hdr=0 dstt=3 hops=1 dst=57c25ccc ref=57c25ccc (WHITELISTED) tid=none
-08:48:16.835 [VRB] [HEAP-TEL] boundary: -632 bytes (bma=8 phl=100)
-08:48:16.836 [VRB] [LINK] XPORT pkt=57c25ccc (WHITELISTED) type=0 ctx=250 hops=0 recv=Interface[LocalTcpInterface] entry_recv=Interface[BackboneInterface3] entry_out=Interface[LocalTcpInterface] rem=0 taken=2 val=1
-08:48:16.838 [VRB] [LINK] FWD dst=57c25ccc (WHITELISTED) to=Interface[BackboneInterface3] size=20
-08:48:16.842 [VRB] [HEAP-TEL] inbound: -2452 bytes (heap=158700 pin=418 bma=8 phl=100 lt=3 revr=3)
-08:48:17.074 [VRB] mem_free: 161532 (52%) [-2360] flash_free: 3518464 (99%) [0] paths: 5 dsts: 5 revr: 3 annc: 0 held: 0
-08:48:17.075 [VRB] preqs: 3 dpreqs: 0 ppreqs: 0 dprt: 32 cdsts: 2 chshs: 2
-08:48:17.076 [VRB] phl: 100 rcp: 0 lt: 3 pl: 0 al: 0 tun: 0
-08:48:17.076 [VRB] bla: 2 bma: 8
-08:48:17.077 [VRB] pin: 418 pout: 21 padd: 5 dpr: 2 ikd: 6 ia: 0
-
-08:48:17.507 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=183 type=1 ctx=0 hdr=1 dstt=0 hops=4 dst=5e2c471f ref=5e2c471f (BLACKLISTED) tid=682e34ed
-08:48:17.509 [VRB] [PKT] DROP boundary dst=5e2c471f ref=5e2c471f (BLACKLISTED) type=1 ctx=0 hdr=1
-08:48:18.527 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=ae7832a0 (WHITELISTED) tid=none
-08:48:18.529 [VRB] [HEAP-TEL] boundary: -792 bytes (bma=8 phl=100)
-08:48:18.531 [VRB] [PATH] REQ dst=ae7832a0 (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:48:18.533 [VRB] [HEAP-TEL] inbound: -828 bytes (heap=160276 pin=420 bma=8 phl=100 lt=3 revr=3)
-08:48:18.603 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=65593bec (WHITELISTED) tid=none
-08:48:18.605 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=8 phl=100)
-08:48:18.607 [VRB] [PATH] REQ dst=65593bec (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:48:18.609 [VRB] [HEAP-TEL] inbound: -796 bytes (heap=160144 pin=421 bma=8 phl=100 lt=3 revr=3)
-08:48:18.611 [VRB] [HEAP-TEL] jobs: 312 bytes (heap=161528)
-08:48:19.047 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=220 type=1 ctx=0 hdr=1 dstt=0 hops=5 dst=6f207ef0 ref=6f207ef0 (BLACKLISTED) tid=682e34ed
-08:48:19.048 [VRB] [PKT] DROP boundary dst=6f207ef0 ref=6f207ef0 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:48:20.166 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=bce2c8c9 (WHITELISTED) tid=none
-08:48:20.168 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=8 phl=100)
-08:48:20.170 [VRB] [PATH] REQ dst=bce2c8c9 (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:48:20.172 [VRB] [HEAP-TEL] inbound: -920 bytes (heap=160172 pin=423 bma=8 phl=100 lt=3 revr=3)
-08:48:20.402 [VRB] [HEAP-TEL] jobs: 164 bytes (heap=161528)
-08:48:21.093 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=182af0c5 (WHITELISTED) tid=none
-08:48:21.094 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=8 phl=100)
-08:48:21.096 [VRB] [PATH] REQ dst=182af0c5 (WHITELISTED) from=Interface[BackboneInterface3] local=0 sz=48
-08:48:21.098 [VRB] [HEAP-TEL] inbound: -792 bytes (heap=160300 pin=424 bma=8 phl=100 lt=3 revr=3)
-08:48:21.184 [VRB] [HEAP-TEL] jobs: 156 bytes (heap=161540)
-08:48:21.707 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=202 type=1 ctx=0 hdr=1 dstt=0 hops=5 dst=9a6a3413 ref=9a6a3413 (BLACKLISTED) tid=5a94e5d8
-08:48:21.709 [VRB] [PKT] DROP boundary dst=9a6a3413 ref=9a6a3413 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:48:21.715 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=204 type=1 ctx=0 hdr=1 dstt=0 hops=5 dst=7fa15656 ref=7fa15656 (BLACKLISTED) tid=5a94e5d8
-08:48:21.716 [VRB] [PKT] DROP boundary dst=7fa15656 ref=7fa15656 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:48:21.726 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=196 type=1 ctx=0 hdr=1 dstt=0 hops=5 dst=b8eec716 ref=b8eec716 (BLACKLISTED) tid=5a94e5d8
-08:48:21.728 [VRB] [PKT] DROP boundary dst=b8eec716 ref=b8eec716 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:48:22.742 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=198 type=1 ctx=0 hdr=1 dstt=0 hops=5 dst=4fcaa0b7 ref=4fcaa0b7 (BLACKLISTED) tid=5a94e5d8
-08:48:22.743 [VRB] [PKT] DROP boundary dst=4fcaa0b7 ref=4fcaa0b7 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:48:22.912 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=a3dfea28 (WHITELISTED) tid=none
-08:48:22.914 [VRB] [HEAP-TEL] boundary: -748 bytes (bma=8 phl=100)
-08:48:22.916 [VRB] [PATH] REQ dst=a3dfea28 (WHITELISTED) from=Interface[BackboneInterface3] local=0 sz=48
-08:48:22.918 [VRB] [HEAP-TEL] inbound: -916 bytes (heap=160192 pin=429 bma=8 phl=100 lt=3 revr=3)
-08:48:22.995 [VRB] [HEAP-TEL] jobs: 168 bytes (heap=161540)
-08:48:23.104 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=c0485172 (WHITELISTED) tid=none
-08:48:23.105 [VRB] [HEAP-TEL] boundary: -748 bytes (bma=8 phl=100)
-08:48:23.107 [VRB] [PATH] REQ dst=c0485172 (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:48:23.109 [VRB] [HEAP-TEL] inbound: -916 bytes (heap=160192 pin=430 bma=8 phl=100 lt=3 revr=3)
-08:48:23.254 [VRB] [HEAP-TEL] jobs: 168 bytes (heap=161540)
-08:48:23.649 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=a3dfea28 (WHITELISTED) tid=none
-08:48:23.650 [VRB] [HEAP-TEL] boundary: -748 bytes (bma=8 phl=100)
-08:48:23.652 [VRB] [PATH] REQ dst=a3dfea28 (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:48:23.654 [VRB] [HEAP-TEL] inbound: -916 bytes (heap=160192 pin=431 bma=8 phl=100 lt=3 revr=3)
-08:48:23.770 [VRB] [HEAP-TEL] jobs: 168 bytes (heap=161540)
-08:48:24.057 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=aeb1c23a (WHITELISTED) tid=none
-08:48:24.059 [VRB] [HEAP-TEL] boundary: -748 bytes (bma=8 phl=100)
-08:48:24.061 [VRB] [PATH] REQ dst=aeb1c23a (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:48:24.063 [VRB] [HEAP-TEL] inbound: -796 bytes (heap=160312 pin=432 bma=8 phl=100 lt=3 revr=3)
-08:48:24.287 [VRB] [HEAP-TEL] jobs: 160 bytes (heap=161544)
-[TcpIF] Connecting to rns.birdsnet.co.br:4242 (DNS)...
-[266437][E][WiFiGeneric.cpp:1583] hostByName(): DNS Failed for rns.birdsnet.co.br
-[TcpIF] DNS failed for rns.birdsnet.co.br
-[TcpIF] Failed to connect to rns.birdsnet.co.br:4242 (attempt 5, next retry in 120s)
-08:48:25.194 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=218 type=1 ctx=0 hdr=1 dstt=0 hops=3 dst=5bcf3bcb ref=5bcf3bcb (BLACKLISTED) tid=682e34ed
-08:48:25.195 [VRB] [PKT] DROP boundary dst=5bcf3bcb ref=5bcf3bcb (BLACKLISTED) type=1 ctx=0 hdr=1
-08:48:26.109 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=218 type=1 ctx=0 hdr=1 dstt=0 hops=5 dst=5bcf3bcb ref=5bcf3bcb (BLACKLISTED) tid=5a94e5d8
-08:48:26.110 [VRB] [PKT] DROP boundary dst=5bcf3bcb ref=5bcf3bcb (BLACKLISTED) type=1 ctx=0 hdr=1
-08:48:26.415 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=73f6aee2 (WHITELISTED) tid=none
-08:48:26.416 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=8 phl=100)
-08:48:26.418 [VRB] [PATH] REQ dst=73f6aee2 (WHITELISTED) from=Interface[BackboneInterface3] local=0 sz=48
-08:48:26.420 [VRB] [HEAP-TEL] inbound: -920 bytes (heap=160192 pin=435 bma=8 phl=100 lt=3 revr=3)
-08:48:26.566 [VRB] [HEAP-TEL] jobs: 156 bytes (heap=161544)
-08:48:27.134 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=317 type=1 ctx=0 hdr=1 dstt=0 hops=2 dst=46e9525d ref=46e9525d (BLACKLISTED) tid=5a94e5d8
-08:48:27.136 [VRB] [PKT] DROP boundary dst=46e9525d ref=46e9525d (BLACKLISTED) type=1 ctx=0 hdr=1
-08:48:28.160 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=317 type=1 ctx=0 hdr=1 dstt=0 hops=3 dst=46e9525d ref=46e9525d (BLACKLISTED) tid=682e34ed
-08:48:28.162 [VRB] [PKT] DROP boundary dst=46e9525d ref=46e9525d (BLACKLISTED) type=1 ctx=0 hdr=1
-08:48:28.256 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=aeb1c23a (WHITELISTED) tid=none
-08:48:28.257 [VRB] [HEAP-TEL] boundary: -768 bytes (bma=8 phl=100)
-08:48:28.259 [VRB] [PATH] REQ dst=aeb1c23a (WHITELISTED) from=Interface[BackboneInterface3] local=0 sz=48
-08:48:28.261 [VRB] [HEAP-TEL] inbound: -924 bytes (heap=160476 pin=438 bma=8 phl=100 lt=3 revr=3)
-08:48:28.366 [VRB] [HEAP-TEL] jobs: 156 bytes (heap=161336)
-08:48:28.877 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=21d7df96 (WHITELISTED) tid=none
-08:48:28.879 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=8 phl=100)
-08:48:28.881 [VRB] [PATH] REQ dst=21d7df96 (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:48:28.883 [VRB] [HEAP-TEL] inbound: -920 bytes (heap=160192 pin=439 bma=8 phl=100 lt=3 revr=3)
-08:48:28.891 [VRB] [HEAP-TEL] jobs: 156 bytes (heap=161544)
-08:48:33.174 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=183 type=1 ctx=0 hdr=1 dstt=0 hops=4 dst=8b82861a ref=8b82861a (BLACKLISTED) tid=682e34ed
-08:48:33.175 [VRB] [PKT] DROP boundary dst=8b82861a ref=8b82861a (BLACKLISTED) type=1 ctx=0 hdr=1
-08:48:34.196 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=4df37696 (WHITELISTED) tid=none
-08:48:34.197 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=8 phl=100)
-08:48:34.199 [VRB] [PATH] REQ dst=4df37696 (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:48:34.201 [VRB] [HEAP-TEL] inbound: -920 bytes (heap=160192 pin=441 bma=8 phl=100 lt=3 revr=3)
-08:48:34.323 [VRB] [HEAP-TEL] jobs: 156 bytes (heap=161544)
-08:48:35.327 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=242 type=1 ctx=0 hdr=1 dstt=0 hops=4 dst=760a16f5 ref=760a16f5 (BLACKLISTED) tid=682e34ed
-08:48:35.329 [VRB] [PKT] DROP boundary dst=760a16f5 ref=760a16f5 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:48:35.335 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=224 type=1 ctx=0 hdr=1 dstt=0 hops=5 dst=30f0dea5 ref=30f0dea5 (BLACKLISTED) tid=682e34ed
-08:48:35.337 [VRB] [PKT] DROP boundary dst=30f0dea5 ref=30f0dea5 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:48:36.146 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=1b6b8e8c (WHITELISTED) tid=none
-08:48:36.147 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=8 phl=100)
-08:48:36.149 [VRB] [PATH] REQ dst=1b6b8e8c (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:48:36.151 [VRB] [HEAP-TEL] inbound: -920 bytes (heap=160192 pin=444 bma=8 phl=100 lt=3 revr=3)
-08:48:36.155 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=4443e0d7 (WHITELISTED) tid=none
-08:48:36.156 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=8 phl=100)
-08:48:36.158 [VRB] [PATH] REQ dst=4443e0d7 (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:48:36.160 [VRB] [HEAP-TEL] inbound: -808 bytes (heap=160148 pin=445 bma=8 phl=100 lt=3 revr=3)
-08:48:36.404 [VRB] [HEAP-TEL] jobs: 316 bytes (heap=161544)
-08:48:37.574 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=4df37696 (WHITELISTED) tid=none
-08:48:37.575 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=8 phl=100)
-08:48:37.577 [VRB] [PATH] REQ dst=4df37696 (WHITELISTED) from=Interface[BackboneInterface3] local=0 sz=48
-08:48:37.579 [VRB] [HEAP-TEL] inbound: -912 bytes (heap=160212 pin=446 bma=8 phl=100 lt=3 revr=3)
-08:48:37.688 [VRB] [HEAP-TEL] jobs: 156 bytes (heap=161544)
-08:48:37.990 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=224 type=1 ctx=0 hdr=1 dstt=0 hops=4 dst=30f0dea5 ref=30f0dea5 (BLACKLISTED) tid=5a94e5d8
-08:48:37.991 [VRB] [PKT] DROP boundary dst=30f0dea5 ref=30f0dea5 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:48:38.015 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=a1c8126d (WHITELISTED) tid=none
-08:48:38.016 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=8 phl=100)
-08:48:38.018 [VRB] [PATH] REQ dst=a1c8126d (WHITELISTED) from=Interface[BackboneInterface3] local=0 sz=48
-08:48:38.020 [VRB] [HEAP-TEL] inbound: -780 bytes (heap=160136 pin=448 bma=8 phl=100 lt=3 revr=3)
-08:48:38.028 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=242 type=1 ctx=0 hdr=1 dstt=0 hops=5 dst=760a16f5 ref=760a16f5 (BLACKLISTED) tid=5a94e5d8
-08:48:38.030 [VRB] [PKT] DROP boundary dst=760a16f5 ref=760a16f5 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:48:38.036 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=192 type=1 ctx=0 hdr=1 dstt=0 hops=5 dst=a8d24177 ref=a8d24177 (BLACKLISTED) tid=5a94e5d8
-08:48:38.038 [VRB] [PKT] DROP boundary dst=a8d24177 ref=a8d24177 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:48:38.403 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=192 type=1 ctx=0 hdr=1 dstt=0 hops=4 dst=a8d24177 ref=a8d24177 (BLACKLISTED) tid=682e34ed
-08:48:38.405 [VRB] [PKT] DROP boundary dst=a8d24177 ref=a8d24177 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:48:38.411 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=214 type=1 ctx=0 hdr=1 dstt=0 hops=2 dst=9de1925b ref=9de1925b (BLACKLISTED) tid=682e34ed
-08:48:38.412 [VRB] [PKT] DROP boundary dst=9de1925b ref=9de1925b (BLACKLISTED) type=1 ctx=0 hdr=1
-08:48:39.340 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=bf2cfc24 (WHITELISTED) tid=none
-08:48:39.342 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=8 phl=100)
-08:48:39.344 [VRB] [PATH] REQ dst=bf2cfc24 (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:48:39.346 [VRB] [HEAP-TEL] inbound: -800 bytes (heap=160184 pin=453 bma=8 phl=100 lt=3 revr=3)
-08:48:39.510 [VRB] [HEAP-TEL] jobs: 312 bytes (heap=161560)
-08:48:40.656 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=5db7aa18 (WHITELISTED) tid=none
-08:48:40.658 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=8 phl=100)
-08:48:40.660 [VRB] [PATH] REQ dst=5db7aa18 (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:48:40.662 [VRB] [HEAP-TEL] inbound: -920 bytes (heap=160180 pin=454 bma=8 phl=100 lt=3 revr=3)
-08:48:40.666 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=5db7aa18 (WHITELISTED) tid=none
-08:48:40.668 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=8 phl=100)
-08:48:40.670 [VRB] [PATH] REQ dst=5db7aa18 (WHITELISTED) from=Interface[BackboneInterface3] local=0 sz=48
-08:48:40.671 [VRB] [HEAP-TEL] inbound: -760 bytes (heap=160224 pin=455 bma=8 phl=100 lt=3 revr=3)
-08:48:40.798 [VRB] [HEAP-TEL] jobs: 156 bytes (heap=161560)
-08:48:42.389 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=907bf251 (WHITELISTED) tid=none
-08:48:42.390 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=8 phl=100)
-08:48:42.392 [VRB] [PATH] REQ dst=907bf251 (WHITELISTED) from=Interface[BackboneInterface3] local=0 sz=48
-08:48:42.394 [VRB] [HEAP-TEL] inbound: -916 bytes (heap=160224 pin=456 bma=8 phl=100 lt=3 revr=3)
-08:48:42.614 [VRB] [HEAP-TEL] jobs: 156 bytes (heap=161560)
-08:48:42.901 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=bce2c8c9 (WHITELISTED) tid=none
-08:48:42.903 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=8 phl=100)
-08:48:42.905 [VRB] [PATH] REQ dst=bce2c8c9 (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:48:42.907 [VRB] [HEAP-TEL] inbound: -804 bytes (heap=160336 pin=457 bma=8 phl=100 lt=3 revr=3)
-08:48:43.131 [VRB] [HEAP-TEL] jobs: 156 bytes (heap=161348)
-08:48:43.138 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=2ec4f625 (WHITELISTED) tid=none
-08:48:43.139 [VRB] [HEAP-TEL] boundary: -560 bytes (bma=8 phl=100)
-08:48:43.141 [VRB] [PATH] REQ dst=2ec4f625 (WHITELISTED) from=Interface[BackboneInterface3] local=0 sz=48
-08:48:43.143 [VRB] [HEAP-TEL] inbound: -716 bytes (heap=160212 pin=458 bma=8 phl=100 lt=3 revr=3)
-08:48:43.383 [VRB] [HEAP-TEL] jobs: 156 bytes (heap=161556)
-08:48:46.281 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=2ace8f08 (WHITELISTED) tid=none
-08:48:46.283 [VRB] [HEAP-TEL] boundary: -768 bytes (bma=8 phl=100)
-08:48:46.285 [VRB] [PATH] REQ dst=2ace8f08 (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:48:46.287 [VRB] [HEAP-TEL] inbound: -804 bytes (heap=160332 pin=459 bma=8 phl=100 lt=3 revr=3)
-08:48:46.482 [VRB] [HEAP-TEL] jobs: 156 bytes (heap=161556)
-08:48:47.917 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=aeb1c23a (WHITELISTED) tid=none
-08:48:47.919 [VRB] [HEAP-TEL] boundary: -780 bytes (bma=8 phl=100)
-08:48:47.921 [VRB] [PATH] REQ dst=aeb1c23a (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:48:47.923 [VRB] [HEAP-TEL] inbound: -944 bytes (heap=160180 pin=460 bma=8 phl=100 lt=3 revr=3)
-08:48:48.033 [VRB] [HEAP-TEL] jobs: 164 bytes (heap=161556)
-08:48:48.335 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=183 type=1 ctx=0 hdr=1 dstt=0 hops=3 dst=2afd7897 ref=2afd7897 (BLACKLISTED) tid=5a94e5d8
-08:48:48.337 [VRB] [PKT] DROP boundary dst=2afd7897 ref=2afd7897 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:48:48.841 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=183 type=1 ctx=0 hdr=1 dstt=0 hops=4 dst=2afd7897 ref=2afd7897 (BLACKLISTED) tid=682e34ed
-08:48:48.843 [VRB] [PKT] DROP boundary dst=2afd7897 ref=2afd7897 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:48:50.683 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=86 type=2 ctx=0 hdr=0 dstt=0 hops=3 dst=3c1f60d2 ref=3c1f60d2 (WHITELISTED) tid=none
-08:48:50.684 [VRB] [HEAP-TEL] boundary: -692 bytes (bma=8 phl=100)
-08:48:50.687 [VRB] [LINK] CREATE dst=3c1f60d2 (WHITELISTED) link=d681512e rem=0 recv=Interface[BackboneInterface1] out=Interface[LocalTcpInterface] lt=4
-08:48:50.692 [VRB] [HEAP-TEL] inbound: -2812 bytes (heap=158292 pin=463 bma=8 phl=100 lt=4 revr=3)
-08:48:50.903 [VRB] [PKT] IN iface=Interface[LocalTcpInterface] sz=118 type=3 ctx=255 hdr=0 dstt=3 hops=1 dst=d681512e ref=d681512e (BLACKLISTED) tid=none
-08:48:50.904 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=9 phl=100)
-08:48:50.905 [VRB] [LRPROOF] IN dst=d681512e (WHITELISTED) hops=0 recv=Interface[LocalTcpInterface] in_lt=1 for_lcl=1 from_lcl=1
-08:48:50.996 [VRB] [LRPROOF] FWD dst=d681512e (WHITELISTED) to=Interface[BackboneInterface1] size=118
-08:48:51.000 [VRB] [HEAP-TEL] inbound: -2676 bytes (heap=158064 pin=464 bma=9 phl=100 lt=4 revr=3)
-08:48:51.421 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=83 type=0 ctx=254 hdr=0 dstt=3 hops=3 dst=d681512e ref=d681512e (WHITELISTED) tid=none
-08:48:51.423 [VRB] [HEAP-TEL] boundary: -692 bytes (bma=9 phl=100)
-08:48:51.424 [VRB] [LINK] XPORT pkt=d681512e (WHITELISTED) type=0 ctx=254 hops=3 recv=Interface[BackboneInterface1] entry_recv=Interface[BackboneInterface1] entry_out=Interface[LocalTcpInterface] rem=0 taken=3 val=1
-08:48:51.426 [VRB] [LINK] FWD dst=d681512e (WHITELISTED) to=Interface[LocalTcpInterface] size=83
-08:48:51.430 [VRB] [HEAP-TEL] inbound: -2468 bytes (heap=158168 pin=465 bma=9 phl=100 lt=4 revr=3)
-08:48:51.436 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=211 type=0 ctx=251 hdr=0 dstt=3 hops=3 dst=d681512e ref=d681512e (WHITELISTED) tid=none
-08:48:51.438 [VRB] [HEAP-TEL] boundary: -812 bytes (bma=9 phl=100)
-08:48:51.439 [VRB] [LINK] XPORT pkt=d681512e (WHITELISTED) type=0 ctx=251 hops=3 recv=Interface[BackboneInterface1] entry_recv=Interface[BackboneInterface1] entry_out=Interface[LocalTcpInterface] rem=0 taken=3 val=1
-08:48:51.441 [VRB] [LINK] FWD dst=d681512e (WHITELISTED) to=Interface[LocalTcpInterface] size=211
-08:48:51.445 [VRB] [HEAP-TEL] inbound: -2288 bytes (heap=158212 pin=466 bma=9 phl=100 lt=4 revr=3)
-08:48:51.449 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=99 type=0 ctx=9 hdr=0 dstt=3 hops=3 dst=d681512e ref=d681512e (WHITELISTED) tid=none
-08:48:51.451 [VRB] [HEAP-TEL] boundary: -704 bytes (bma=9 phl=100)
-08:48:51.453 [VRB] [LINK] XPORT pkt=d681512e (WHITELISTED) type=0 ctx=9 hops=3 recv=Interface[BackboneInterface1] entry_recv=Interface[BackboneInterface1] entry_out=Interface[LocalTcpInterface] rem=0 taken=3 val=1
-08:48:51.454 [VRB] [LINK] FWD dst=d681512e (WHITELISTED) to=Interface[LocalTcpInterface] size=99
-08:48:51.458 [VRB] [HEAP-TEL] inbound: -1012 bytes (heap=158000 pin=467 bma=9 phl=100 lt=4 revr=3)
-08:48:53.044 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=4df37696 (WHITELISTED) tid=none
-08:48:53.045 [VRB] [HEAP-TEL] boundary: -780 bytes (bma=9 phl=100)
-08:48:53.047 [VRB] [PATH] REQ dst=4df37696 (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:48:53.049 [VRB] [HEAP-TEL] inbound: -940 bytes (heap=159636 pin=468 bma=9 phl=100 lt=4 revr=3)
-08:48:53.053 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=4cce8a55 (WHITELISTED) tid=none
-08:48:53.055 [VRB] [HEAP-TEL] boundary: -780 bytes (bma=9 phl=100)
-08:48:53.057 [VRB] [PATH] REQ dst=4cce8a55 (WHITELISTED) from=Interface[BackboneInterface3] local=0 sz=48
-08:48:53.059 [VRB] [HEAP-TEL] inbound: -948 bytes (heap=159516 pin=469 bma=9 phl=100 lt=4 revr=3)
-08:48:53.060 [VRB] [HEAP-TEL] jobs: 328 bytes (heap=161064)
-08:48:53.079 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=4df37696 (WHITELISTED) tid=none
-08:48:53.080 [VRB] [HEAP-TEL] boundary: -572 bytes (bma=9 phl=100)
-08:48:53.082 [VRB] [PATH] REQ dst=4df37696 (WHITELISTED) from=Interface[BackboneInterface3] local=0 sz=48
-08:48:53.084 [VRB] [HEAP-TEL] inbound: -728 bytes (heap=159684 pin=470 bma=9 phl=100 lt=4 revr=3)
-08:48:53.177 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=a1f39935 (WHITELISTED) tid=none
-08:48:53.179 [VRB] [HEAP-TEL] boundary: -776 bytes (bma=9 phl=100)
-08:48:53.181 [VRB] [PATH] REQ dst=a1f39935 (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:48:53.183 [VRB] [HEAP-TEL] inbound: -836 bytes (heap=159628 pin=471 bma=9 phl=100 lt=4 revr=3)
-08:48:53.313 [VRB] [HEAP-TEL] jobs: 324 bytes (heap=161048)
-08:48:54.696 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=183 type=1 ctx=0 hdr=1 dstt=0 hops=3 dst=7649a50d ref=7649a50d (BLACKLISTED) tid=5a94e5d8
-08:48:54.697 [VRB] [PKT] DROP boundary dst=7649a50d ref=7649a50d (BLACKLISTED) type=1 ctx=0 hdr=1
-08:48:54.898 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=413469d1 (WHITELISTED) tid=none
-08:48:54.900 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=9 phl=100)
-08:48:54.902 [VRB] [PATH] REQ dst=413469d1 (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:48:54.904 [VRB] [HEAP-TEL] inbound: -804 bytes (heap=159816 pin=473 bma=9 phl=100 lt=4 revr=3)
-08:48:55.114 [VRB] [HEAP-TEL] jobs: 156 bytes (heap=161048)
-08:48:55.165 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=320 type=1 ctx=0 hdr=1 dstt=0 hops=2 dst=1ba269fb ref=1ba269fb (BLACKLISTED) tid=682e34ed
-08:48:55.167 [VRB] [PKT] DROP boundary dst=1ba269fb ref=1ba269fb (BLACKLISTED) type=1 ctx=0 hdr=1
-08:48:55.174 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=183 type=1 ctx=0 hdr=1 dstt=0 hops=5 dst=7649a50d ref=7649a50d (BLACKLISTED) tid=682e34ed
-08:48:55.175 [VRB] [PKT] DROP boundary dst=7649a50d ref=7649a50d (BLACKLISTED) type=1 ctx=0 hdr=1
-08:48:56.214 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=221 type=1 ctx=0 hdr=1 dstt=0 hops=7 dst=4de3c57f ref=4de3c57f (BLACKLISTED) tid=682e34ed
-08:48:56.215 [VRB] [PKT] DROP boundary dst=4de3c57f ref=4de3c57f (BLACKLISTED) type=1 ctx=0 hdr=1
-08:48:56.633 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=320 type=1 ctx=0 hdr=1 dstt=0 hops=5 dst=1ba269fb ref=1ba269fb (BLACKLISTED) tid=5a94e5d8
-08:48:56.634 [VRB] [PKT] DROP boundary dst=1ba269fb ref=1ba269fb (BLACKLISTED) type=1 ctx=0 hdr=1
-08:48:57.974 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=4443e0d7 (WHITELISTED) tid=none
-08:48:57.975 [VRB] [HEAP-TEL] boundary: -768 bytes (bma=9 phl=100)
-08:48:57.977 [VRB] [PATH] REQ dst=4443e0d7 (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:48:57.979 [VRB] [HEAP-TEL] inbound: -812 bytes (heap=159784 pin=478 bma=9 phl=100 lt=4 revr=3)
-08:48:57.985 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=198 type=1 ctx=0 hdr=1 dstt=0 hops=4 dst=6c704871 ref=6c704871 (BLACKLISTED) tid=5a94e5d8
-08:48:57.987 [VRB] [PKT] DROP boundary dst=6c704871 ref=6c704871 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:48:58.209 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=198 type=1 ctx=0 hdr=1 dstt=0 hops=4 dst=6c704871 ref=6c704871 (BLACKLISTED) tid=682e34ed
-08:48:58.211 [VRB] [PKT] DROP boundary dst=6c704871 ref=6c704871 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:48:58.220 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=d745ac5c (WHITELISTED) tid=none
-08:48:58.221 [VRB] [HEAP-TEL] boundary: -772 bytes (bma=9 phl=100)
-08:48:58.223 [VRB] [PATH] REQ dst=d745ac5c (WHITELISTED) from=Interface[BackboneInterface3] local=0 sz=48
-08:48:58.225 [VRB] [HEAP-TEL] inbound: -820 bytes (heap=159644 pin=481 bma=9 phl=100 lt=4 revr=3)
-08:48:58.239 [VRB] [HEAP-TEL] jobs: 316 bytes (heap=161032)
-08:48:59.180 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=20 type=0 ctx=250 hdr=0 dstt=3 hops=2 dst=57c25ccc ref=57c25ccc (WHITELISTED) tid=none
-08:48:59.182 [VRB] [HEAP-TEL] boundary: -608 bytes (bma=9 phl=100)
-08:48:59.183 [VRB] [LINK] XPORT pkt=57c25ccc (WHITELISTED) type=0 ctx=250 hops=2 recv=Interface[BackboneInterface3] entry_recv=Interface[BackboneInterface3] entry_out=Interface[LocalTcpInterface] rem=0 taken=2 val=1
-08:48:59.185 [VRB] [LINK] FWD dst=57c25ccc (WHITELISTED) to=Interface[LocalTcpInterface] size=20
-08:48:59.189 [VRB] [HEAP-TEL] inbound: -2428 bytes (heap=158500 pin=482 bma=9 phl=100 lt=4 revr=3)
-08:48:59.205 [VRB] [PKT] IN iface=Interface[LocalTcpInterface] sz=20 type=0 ctx=250 hdr=0 dstt=3 hops=1 dst=57c25ccc ref=57c25ccc (WHITELISTED) tid=none
-08:48:59.207 [VRB] [HEAP-TEL] boundary: -608 bytes (bma=9 phl=100)
-08:48:59.208 [VRB] [LINK] XPORT pkt=57c25ccc (WHITELISTED) type=0 ctx=250 hops=0 recv=Interface[LocalTcpInterface] entry_recv=Interface[BackboneInterface3] entry_out=Interface[LocalTcpInterface] rem=0 taken=2 val=1
-08:48:59.210 [VRB] [LINK] FWD dst=57c25ccc (WHITELISTED) to=Interface[BackboneInterface3] size=20
-08:48:59.214 [VRB] [HEAP-TEL] inbound: -2200 bytes (heap=158728 pin=483 bma=9 phl=100 lt=4 revr=3)
-08:49:00.214 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=1a63d1c2 (WHITELISTED) tid=none
-08:49:00.216 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=9 phl=100)
-08:49:00.218 [VRB] [PATH] REQ dst=1a63d1c2 (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:49:00.220 [VRB] [HEAP-TEL] inbound: -800 bytes (heap=159812 pin=484 bma=9 phl=100 lt=4 revr=3)
-08:49:00.290 [VRB] [HEAP-TEL] jobs: 164 bytes (heap=161044)
-08:49:02.971 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=6ad7f810 (WHITELISTED) tid=none
-08:49:02.972 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=9 phl=100)
-08:49:02.974 [VRB] [PATH] REQ dst=6ad7f810 (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:49:02.976 [VRB] [HEAP-TEL] inbound: -924 bytes (heap=159972 pin=485 bma=9 phl=100 lt=4 revr=3)
-08:49:03.080 [VRB] [HEAP-TEL] jobs: 160 bytes (heap=161044)
-08:49:03.634 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=78556c7c (WHITELISTED) tid=none
-08:49:03.635 [VRB] [HEAP-TEL] boundary: -768 bytes (bma=9 phl=100)
-08:49:03.637 [VRB] [PATH] REQ dst=78556c7c (WHITELISTED) from=Interface[BackboneInterface3] local=0 sz=48
-08:49:03.639 [VRB] [HEAP-TEL] inbound: -928 bytes (heap=159964 pin=486 bma=9 phl=100 lt=4 revr=3)
-08:49:03.650 [VRB] [HEAP-TEL] jobs: 160 bytes (heap=161036)
-08:49:04.200 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=29b8fc2f (WHITELISTED) tid=none
-08:49:04.201 [VRB] [HEAP-TEL] boundary: -768 bytes (bma=9 phl=100)
-08:49:04.203 [VRB] [PATH] REQ dst=29b8fc2f (WHITELISTED) from=Interface[BackboneInterface3] local=0 sz=48
-08:49:04.205 [VRB] [HEAP-TEL] inbound: -928 bytes (heap=159964 pin=487 bma=9 phl=100 lt=4 revr=3)
-08:49:04.429 [VRB] [HEAP-TEL] jobs: 160 bytes (heap=161036)
-08:49:05.234 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=227 type=1 ctx=0 hdr=1 dstt=0 hops=2 dst=90a73618 ref=90a73618 (BLACKLISTED) tid=5a94e5d8
-08:49:05.235 [VRB] [PKT] DROP boundary dst=90a73618 ref=90a73618 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:49:05.241 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=195 type=1 ctx=0 hdr=1 dstt=0 hops=2 dst=9c5baf1a ref=9c5baf1a (BLACKLISTED) tid=5a94e5d8
-08:49:05.242 [VRB] [PKT] DROP boundary dst=9c5baf1a ref=9c5baf1a (BLACKLISTED) type=1 ctx=0 hdr=1
-08:49:05.249 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=229 type=1 ctx=0 hdr=1 dstt=0 hops=2 dst=3de90504 ref=3de90504 (BLACKLISTED) tid=5a94e5d8
-08:49:05.250 [VRB] [PKT] DROP boundary dst=3de90504 ref=3de90504 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:49:05.638 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=229 type=1 ctx=0 hdr=1 dstt=0 hops=2 dst=3de90504 ref=3de90504 (BLACKLISTED) tid=682e34ed
-08:49:05.640 [VRB] [PKT] DROP boundary dst=3de90504 ref=3de90504 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:49:05.646 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=227 type=1 ctx=0 hdr=1 dstt=0 hops=3 dst=90a73618 ref=90a73618 (BLACKLISTED) tid=682e34ed
-08:49:05.648 [VRB] [PKT] DROP boundary dst=90a73618 ref=90a73618 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:49:05.948 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=995cc385 (WHITELISTED) tid=none
-08:49:05.950 [VRB] [HEAP-TEL] boundary: -768 bytes (bma=9 phl=100)
-08:49:05.952 [VRB] [PATH] REQ dst=995cc385 (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:49:05.954 [VRB] [HEAP-TEL] inbound: -820 bytes (heap=159812 pin=493 bma=9 phl=100 lt=4 revr=3)
-08:49:05.956 [VRB] [HEAP-TEL] jobs: 160 bytes (heap=161024)
-08:49:06.453 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=5c785c3f (WHITELISTED) tid=none
-08:49:06.455 [VRB] [HEAP-TEL] boundary: -776 bytes (bma=9 phl=100)
-08:49:06.457 [VRB] [PATH] REQ dst=5c785c3f (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:49:06.459 [VRB] [HEAP-TEL] inbound: -932 bytes (heap=159688 pin=494 bma=9 phl=100 lt=4 revr=3)
-08:49:06.461 [VRB] [HEAP-TEL] jobs: 156 bytes (heap=161024)
-08:49:06.663 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=195 type=1 ctx=0 hdr=1 dstt=0 hops=3 dst=9c5baf1a ref=9c5baf1a (BLACKLISTED) tid=682e34ed
-08:49:06.664 [VRB] [PKT] DROP boundary dst=9c5baf1a ref=9c5baf1a (BLACKLISTED) type=1 ctx=0 hdr=1
-08:49:13.128 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=a1f39935 (WHITELISTED) tid=none
-08:49:13.130 [VRB] [HEAP-TEL] boundary: -776 bytes (bma=9 phl=100)
-08:49:13.132 [VRB] [PATH] REQ dst=a1f39935 (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:49:13.134 [VRB] [HEAP-TEL] inbound: -932 bytes (heap=159688 pin=496 bma=9 phl=100 lt=4 revr=3)
-08:49:13.238 [VRB] [HEAP-TEL] jobs: 156 bytes (heap=161024)
-08:49:14.030 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=d755ed1c (WHITELISTED) tid=none
-08:49:14.032 [VRB] [HEAP-TEL] boundary: -776 bytes (bma=9 phl=100)
-08:49:14.034 [VRB] [PATH] REQ dst=d755ed1c (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:49:14.036 [VRB] [HEAP-TEL] inbound: -932 bytes (heap=159688 pin=497 bma=9 phl=100 lt=4 revr=3)
-08:49:14.174 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=7e523c8b (WHITELISTED) tid=none
-08:49:14.176 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=9 phl=100)
-08:49:14.178 [VRB] [PATH] REQ dst=7e523c8b (WHITELISTED) from=Interface[BackboneInterface3] local=0 sz=48
-08:49:14.180 [VRB] [HEAP-TEL] inbound: -788 bytes (heap=159676 pin=498 bma=9 phl=100 lt=4 revr=3)
-08:49:14.243 [VRB] [HEAP-TEL] jobs: 320 bytes (heap=161044)
-08:49:14.851 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=fb4c70e2 (WHITELISTED) tid=none
-08:49:14.853 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=9 phl=100)
-08:49:14.855 [VRB] [PATH] REQ dst=fb4c70e2 (WHITELISTED) from=Interface[BackboneInterface3] local=0 sz=48
-08:49:14.857 [VRB] [HEAP-TEL] inbound: -816 bytes (heap=159824 pin=499 bma=9 phl=100 lt=4 revr=3)
-08:49:14.996 [VRB] [HEAP-TEL] jobs: 156 bytes (heap=161028)
-08:49:15.200 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=a3dfea28 (WHITELISTED) tid=none
-08:49:15.202 [VRB] [HEAP-TEL] boundary: -768 bytes (bma=9 phl=100)
-08:49:15.204 [VRB] [PATH] REQ dst=a3dfea28 (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:49:15.206 [VRB] [HEAP-TEL] inbound: -816 bytes (heap=159808 pin=500 bma=9 phl=100 lt=4 revr=3)
-08:49:15.248 [VRB] [HEAP-TEL] jobs: 168 bytes (heap=160888)
-08:49:17.295 [VRB] mem_free: 161028 (52%) [-504] flash_free: 3518464 (99%) [0] paths: 5 dsts: 5 revr: 3 annc: 0 held: 0
-08:49:17.296 [VRB] preqs: 3 dpreqs: 0 ppreqs: 0 dprt: 32 cdsts: 2 chshs: 2
-08:49:17.297 [VRB] phl: 100 rcp: 0 lt: 4 pl: 0 al: 0 tun: 0
-08:49:17.298 [VRB] bla: 2 bma: 9
-08:49:17.299 [VRB] pin: 500 pout: 21 padd: 5 dpr: 2 ikd: 6 ia: 0
+23-02:28:19.149 [VRB] [LoRa] RX 243 bytes
+[Meshchat] [DATA] - FROM: Interface[LoRaInterface] (LAN) - TO: 13f4b14d (WAN) - WL-PASS hops=1 sz=243
+[Meshchat] [DATA] - FROM: Interface[LoRaInterface] (LAN) - TO: 13f4b14d (WAN) - LAN-IN hops=1 sz=243
+[Meshchat] [DATA] - FROM: Interface[LoRaInterface] (LAN) - TO: 13f4b14d (WAN) - FWD: Interface[BackboneInterface1] (WAN) transport hops=1
+23-02:28:19.157 [NOT] LINK-XPORT: dest 13f4b14d NOT in link_table (size=0)
+23-02:28:19.286 [VRB] heap: 135312/310324 (43%) [+3360] flash: 53248/3538944 (1%) [+0] paths: 2 dsts: 5 revr: 11 annc: 0 held: 0
+23-02:28:19.287 [VRB] preqs: 0 dpreqs: 0 ppreqs: 0 dprt: 29 cdsts: 2 chshs: 2
+23-02:28:19.288 [VRB] phl: 71 rcp: 0 lt: 0 pl: 0 al: 0 tun: 0
+23-02:28:19.289 [VRB] bla: 1 bma: 16
+23-02:28:19.290 [VRB] pin: 7284 pout: 25 padd: 1 dpr: 1 ikd: 2 ia: 0
-08:49:17.615 [VRB] [PKT] IN iface=Interface[LocalTcpInterface] sz=51 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=739417cc (WHITELISTED) tid=none
-08:49:17.617 [VRB] [HEAP-TEL] boundary: -800 bytes (bma=10 phl=100)
-08:49:17.619 [VRB] [PATH] REQ dst=739417cc (WHITELISTED) from=Interface[LocalTcpInterface] local=1 sz=32
-08:49:17.623 [VRB] [LoRa] TX 67 bytes
-08:49:17.635 [VRB] [HEAP-TEL] inbound: -4656 bytes (heap=155980 pin=501 bma=10 phl=100 lt=4 revr=3)
-08:49:17.803 [VRB] [HEAP-TEL] jobs: 164 bytes (heap=158916)
-08:49:17.834 [VRB] [LoRa] TXSTART 67 bytes
-[Boundary] TXCFG f=914875000 sf=10 bw=4 cr=1 ldro=0 pre=18 hdr=0 len=68 crc=1 iq=0 txp=19
+23-02:28:22.128 [VRB] [LoRa] RX 51 bytes
+[Meshchat] [DATA] - FROM: Interface[LoRaInterface] (LAN) - TO: 6b9f6601 (LAN) - WL-PASS hops=1 sz=51
+[Meshchat] [DATA] - FROM: Interface[LoRaInterface] (LAN) - TO: 6b9f6601 (LAN) - LAN-IN hops=1 sz=51
+23-02:28:22.131 [NOT] FWD-CHECK - FROM: Interface[LoRaInterface] (LAN) TO: 6b9f6601 (LAN) LOCAL
+23-02:28:22.132 [NOT] SKIP-FWD - TO: 6b9f6601 is local dest
+23-02:28:22.133 [NOT] LINK-XPORT: dest 6b9f6601 NOT in link_table (size=0)
+[Meshchat] [DATA] - FROM: Interface[LoRaInterface] (LAN) - TO: 6b9f6601 (LAN) - LAN-DELIVER
+[Meshchat] [DATA] - FROM: Interface[LoRaInterface] (LAN) - PATH-REQ for 13f4b14d from Interface[LoRaInterface]
+23-02:28:25.600 [VRB] [LoRa] RX 51 bytes
+[Meshchat] [DATA] - FROM: Interface[LoRaInterface] (LAN) - TO: 6b9f6601 (LAN) - WL-PASS hops=1 sz=51
+[Meshchat] [DATA] - FROM: Interface[LoRaInterface] (LAN) - TO: 6b9f6601 (LAN) - LAN-IN hops=1 sz=51
+23-02:28:25.604 [NOT] FWD-CHECK - FROM: Interface[LoRaInterface] (LAN) TO: 6b9f6601 (LAN) LOCAL
+23-02:28:25.605 [NOT] SKIP-FWD - TO: 6b9f6601 is local dest
+23-02:28:25.606 [NOT] LINK-XPORT: dest 6b9f6601 NOT in link_table (size=0)
+[Meshchat] [DATA] - FROM: Interface[LoRaInterface] (LAN) - TO: 6b9f6601 (LAN) - LAN-DELIVER
+[Meshchat] [DATA] - FROM: Interface[LoRaInterface] (LAN) - PATH-REQ for 13f4b14d from Interface[LoRaInterface]
+[HEAP] free=172488 min=168652 max_alloc=159732 psram=2054639
+[WL#1] 1 entries: 29f9a20c
+[WL#2] 16 entries: 13f4b14d 025e9ee3 28662625 15402ebc 29f9a20c aec378e9 7a3f2ded e392d652 4afdafd1 006e3732 6d6bf9d4 fbb6185a 7b6a97f1 6e9c839d d97570c6 cf4acf5e
+23-02:28:29.755 [VRB] [LoRa] RX 51 bytes
+[Meshchat] [DATA] - FROM: Interface[LoRaInterface] (LAN) - TO: 6b9f6601 (LAN) - WL-PASS hops=1 sz=51
+[Meshchat] [DATA] - FROM: Interface[LoRaInterface] (LAN) - TO: 6b9f6601 (LAN) - LAN-IN hops=1 sz=51
+23-02:28:29.758 [NOT] FWD-CHECK - FROM: Interface[LoRaInterface] (LAN) TO: 6b9f6601 (LAN) LOCAL
+23-02:28:29.760 [NOT] SKIP-FWD - TO: 6b9f6601 is local dest
+23-02:28:29.761 [NOT] LINK-XPORT: dest 6b9f6601 NOT in link_table (size=0)
+[Meshchat] [DATA] - FROM: Interface[LoRaInterface] (LAN) - TO: 6b9f6601 (LAN) - LAN-DELIVER
+[Meshchat] [DATA] - FROM: Interface[LoRaInterface] (LAN) - PATH-REQ for 13f4b14d from Interface[LoRaInterface]
+23-02:28:33.644 [VRB] [LoRa] RX 51 bytes
+[Meshchat] [DATA] - FROM: Interface[LoRaInterface] (LAN) - TO: 6b9f6601 (LAN) - WL-PASS hops=1 sz=51
+[Meshchat] [DATA] - FROM: Interface[LoRaInterface] (LAN) - TO: 6b9f6601 (LAN) - LAN-IN hops=1 sz=51
+23-02:28:33.647 [NOT] FWD-CHECK - FROM: Interface[LoRaInterface] (LAN) TO: 6b9f6601 (LAN) LOCAL
+23-02:28:33.648 [NOT] SKIP-FWD - TO: 6b9f6601 is local dest
+23-02:28:33.649 [NOT] LINK-XPORT: dest 6b9f6601 NOT in link_table (size=0)
+[Meshchat] [DATA] - FROM: Interface[LoRaInterface] (LAN) - TO: 6b9f6601 (LAN) - LAN-DELIVER
+[Meshchat] [DATA] - FROM: Interface[LoRaInterface] (LAN) - PATH-REQ for 13f4b14d from Interface[LoRaInterface]
+23-02:28:37.654 [VRB] [LoRa] RX 51 bytes
+23-02:28:37.655 [NOT] FWD-CHECK - FROM: Interface[LoRaInterface] (LAN) TO: 6b9f6601 (LAN) LOCAL
+23-02:28:37.657 [NOT] SKIP-FWD - TO: 6b9f6601 is local dest
+23-02:28:37.658 [NOT] LINK-XPORT: dest 6b9f6601 NOT in link_table (size=0)
+23-02:28:37.816 [VRB] [LoRa] TX 230 bytes
+23-02:28:38.014 [VRB] [LoRa] TXSTART 230 bytes
+[Boundary] TXCFG f=914875000 sf=10 bw=4 cr=1 ldro=0 pre=18 hdr=0 len=231 crc=1 iq=0 txp=19
[Boundary] TXDONE irq=0001 timeout=0 pa=1
-08:49:18.858 [VRB] [PKT] IN iface=Interface[LocalTcpInterface] sz=51 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=1c1db988 (WHITELISTED) tid=none
-08:49:18.860 [VRB] [HEAP-TEL] boundary: -744 bytes (bma=10 phl=100)
-08:49:18.862 [VRB] [PATH] REQ dst=1c1db988 (WHITELISTED) from=Interface[LocalTcpInterface] local=1 sz=32
-08:49:18.866 [VRB] [PATH] RESP dst=1c1db988 (WHITELISTED) hops=79 to=Interface[LocalTcpInterface] local=1
-08:49:18.868 [VRB] [HEAP-TEL] inbound: -1776 bytes (heap=158472 pin=502 bma=10 phl=100 lt=4 revr=3)
-08:49:18.940 [VRB] [HEAP-TEL] jobs: 156 bytes (heap=159644)
-08:49:19.154 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=214 type=1 ctx=11 hdr=1 dstt=0 hops=4 dst=739417cc ref=739417cc (WHITELISTED) tid=682e34ed
-08:49:19.155 [VRB] [HEAP-TEL] boundary: -880 bytes (bma=10 phl=100)
-08:49:19.246 [VRB] [ANNC] IN dst=739417cc (WHITELISTED) valid=1 ctx=11 hops=4 iface=Interface[BackboneInterface1] data=179
-08:49:19.257 [VRB] [PATH] RESP dst=739417cc (WHITELISTED) hops=4 to=Interface[LocalTcpInterface] local=0
-08:49:19.261 [VRB] [PATH] STORED dst=739417cc (WHITELISTED) hops=4 iface=Interface[BackboneInterface1] paths=6 bla=2
-08:49:19.262 [VRB] [HEAP-TEL] inbound: -6072 bytes (heap=152972 pin=503 bma=10 phl=100 lt=4 revr=3)
-08:49:19.269 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=214 type=1 ctx=11 hdr=1 dstt=0 hops=2 dst=739417cc ref=739417cc (WHITELISTED) tid=5a94e5d8
-08:49:19.270 [VRB] [HEAP-TEL] boundary: -884 bytes (bma=10 phl=100)
-08:49:19.361 [VRB] [ANNC] IN dst=739417cc (WHITELISTED) valid=1 ctx=11 hops=2 iface=Interface[BackboneInterface3] data=179
-08:49:19.367 [VRB] [PKT] IN iface=Interface[LocalTcpInterface] sz=102 type=2 ctx=0 hdr=1 dstt=0 hops=1 dst=739417cc ref=739417cc (WHITELISTED) tid=7e9c03b9
-08:49:19.368 [VRB] [HEAP-TEL] boundary: -780 bytes (bma=10 phl=100)
-08:49:19.371 [VRB] [LINK] CREATE dst=739417cc (WHITELISTED) link=71603424 rem=4 recv=Interface[LocalTcpInterface] out=Interface[BackboneInterface1] lt=5
-08:49:19.376 [VRB] [HEAP-TEL] inbound: -2948 bytes (heap=154864 pin=505 bma=10 phl=100 lt=5 revr=3)
-08:49:19.412 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=bccea474 (WHITELISTED) tid=none
-08:49:19.414 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=10 phl=100)
-08:49:19.416 [VRB] [PATH] REQ dst=bccea474 (WHITELISTED) from=Interface[BackboneInterface3] local=0 sz=48
-08:49:19.418 [VRB] [HEAP-TEL] inbound: -788 bytes (heap=155120 pin=506 bma=10 phl=100 lt=5 revr=3)
-08:49:19.614 [VRB] [HEAP-TEL] jobs: 156 bytes (heap=157660)
-08:49:19.871 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=118 type=3 ctx=255 hdr=0 dstt=3 hops=4 dst=71603424 ref=71603424 (BLACKLISTED) tid=none
-08:49:19.872 [VRB] [HEAP-TEL] boundary: -716 bytes (bma=10 phl=100)
-08:49:19.873 [VRB] [LRPROOF] IN dst=71603424 (BLACKLISTED) hops=4 recv=Interface[BackboneInterface1] in_lt=1 for_lcl=1 from_lcl=0
-08:49:19.962 [VRB] [LRPROOF] FWD dst=71603424 (BLACKLISTED) to=Interface[LocalTcpInterface] size=118
-08:49:19.967 [VRB] [HEAP-TEL] inbound: -2300 bytes (heap=154880 pin=507 bma=10 phl=100 lt=5 revr=3)
-08:49:19.970 [VRB] [HEAP-TEL] jobs: -1544 bytes (heap=154532)
-08:49:19.983 [VRB] [PKT] IN iface=Interface[LocalTcpInterface] sz=83 type=0 ctx=254 hdr=0 dstt=3 hops=1 dst=71603424 ref=71603424 (BLACKLISTED) tid=none
-08:49:19.985 [VRB] [LINK] XPORT pkt=71603424 (WHITELISTED) type=0 ctx=254 hops=0 recv=Interface[LocalTcpInterface] entry_recv=Interface[LocalTcpInterface] entry_out=Interface[BackboneInterface1] rem=4 taken=0 val=1
-08:49:19.986 [VRB] [LINK] FWD dst=71603424 (WHITELISTED) to=Interface[BackboneInterface1] size=83
-08:49:19.990 [VRB] [HEAP-TEL] inbound: -1016 bytes (heap=154804 pin=508 bma=11 phl=100 lt=5 revr=3)
-08:49:19.996 [VRB] [PKT] IN iface=Interface[LocalTcpInterface] sz=211 type=0 ctx=251 hdr=0 dstt=3 hops=1 dst=71603424 ref=71603424 (WHITELISTED) tid=none
-08:49:19.998 [VRB] [HEAP-TEL] boundary: -804 bytes (bma=11 phl=100)
-08:49:19.999 [VRB] [LINK] XPORT pkt=71603424 (WHITELISTED) type=0 ctx=251 hops=0 recv=Interface[LocalTcpInterface] entry_recv=Interface[LocalTcpInterface] entry_out=Interface[BackboneInterface1] rem=4 taken=0 val=1
-08:49:20.001 [VRB] [LINK] FWD dst=71603424 (WHITELISTED) to=Interface[BackboneInterface1] size=211
-08:49:20.005 [VRB] [HEAP-TEL] inbound: -2808 bytes (heap=152832 pin=509 bma=11 phl=100 lt=5 revr=3)
-08:49:20.009 [VRB] [PKT] IN iface=Interface[LocalTcpInterface] sz=99 type=0 ctx=9 hdr=0 dstt=3 hops=1 dst=71603424 ref=71603424 (WHITELISTED) tid=none
-08:49:20.010 [VRB] [HEAP-TEL] boundary: -688 bytes (bma=11 phl=100)
-08:49:20.012 [VRB] [LINK] XPORT pkt=71603424 (WHITELISTED) type=0 ctx=9 hops=0 recv=Interface[LocalTcpInterface] entry_recv=Interface[LocalTcpInterface] entry_out=Interface[BackboneInterface1] rem=4 taken=0 val=1
-08:49:20.014 [VRB] [LINK] FWD dst=71603424 (WHITELISTED) to=Interface[BackboneInterface1] size=99
-08:49:20.018 [VRB] [HEAP-TEL] inbound: -2620 bytes (heap=151548 pin=510 bma=11 phl=100 lt=5 revr=3)
-08:49:20.048 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=be69d76d (WHITELISTED) tid=none
-08:49:20.050 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=11 phl=100)
-08:49:20.052 [VRB] [PATH] REQ dst=be69d76d (WHITELISTED) from=Interface[BackboneInterface3] local=0 sz=48
-08:49:20.054 [VRB] [HEAP-TEL] inbound: -920 bytes (heap=151436 pin=511 bma=11 phl=100 lt=5 revr=3)
-08:49:20.228 [VRB] [HEAP-TEL] jobs: 156 bytes (heap=156820)
-08:49:20.687 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=219bdcf0 (WHITELISTED) tid=none
-08:49:20.688 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=11 phl=100)
-08:49:20.690 [VRB] [PATH] REQ dst=219bdcf0 (WHITELISTED) from=Interface[BackboneInterface3] local=0 sz=48
-08:49:20.692 [VRB] [HEAP-TEL] inbound: -920 bytes (heap=156440 pin=512 bma=11 phl=100 lt=5 revr=3)
-08:49:20.731 [VRB] [HEAP-TEL] jobs: 160 bytes (heap=157516)
-08:49:20.983 [VRB] [HEAP-TEL] jobs: 1000 bytes (heap=158516)
-08:49:20.992 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=99 type=0 ctx=10 hdr=0 dstt=3 hops=4 dst=71603424 ref=71603424 (WHITELISTED) tid=none
-08:49:20.993 [VRB] [HEAP-TEL] boundary: -704 bytes (bma=11 phl=100)
-08:49:20.994 [VRB] [LINK] XPORT pkt=71603424 (WHITELISTED) type=0 ctx=10 hops=4 recv=Interface[BackboneInterface1] entry_recv=Interface[LocalTcpInterface] entry_out=Interface[BackboneInterface1] rem=4 taken=0 val=1
-08:49:20.996 [VRB] [LINK] FWD dst=71603424 (WHITELISTED) to=Interface[LocalTcpInterface] size=99
-08:49:21.000 [VRB] [HEAP-TEL] inbound: -2596 bytes (heap=155472 pin=513 bma=11 phl=100 lt=5 revr=3)
-08:49:25.303 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=202 type=1 ctx=0 hdr=1 dstt=0 hops=3 dst=c6264411 ref=c6264411 (BLACKLISTED) tid=682e34ed
-08:49:25.305 [VRB] [PKT] DROP boundary dst=c6264411 ref=c6264411 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:49:25.311 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=202 type=1 ctx=0 hdr=1 dstt=0 hops=3 dst=b0031f77 ref=b0031f77 (BLACKLISTED) tid=682e34ed
-08:49:25.312 [VRB] [PKT] DROP boundary dst=b0031f77 ref=b0031f77 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:49:25.319 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=183 type=1 ctx=0 hdr=1 dstt=0 hops=3 dst=95c6fd2a ref=95c6fd2a (BLACKLISTED) tid=682e34ed
-08:49:25.320 [VRB] [PKT] DROP boundary dst=95c6fd2a ref=95c6fd2a (BLACKLISTED) type=1 ctx=0 hdr=1
-08:49:25.327 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=202 type=1 ctx=0 hdr=1 dstt=0 hops=2 dst=b0031f77 ref=b0031f77 (BLACKLISTED) tid=5a94e5d8
-08:49:25.329 [VRB] [PKT] DROP boundary dst=b0031f77 ref=b0031f77 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:49:26.324 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=183 type=1 ctx=0 hdr=1 dstt=0 hops=3 dst=95c6fd2a ref=95c6fd2a (BLACKLISTED) tid=5a94e5d8
-08:49:26.326 [VRB] [PKT] DROP boundary dst=95c6fd2a ref=95c6fd2a (BLACKLISTED) type=1 ctx=0 hdr=1
-08:49:28.578 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=221 type=1 ctx=0 hdr=1 dstt=0 hops=4 dst=e5a2b1e7 ref=e5a2b1e7 (BLACKLISTED) tid=682e34ed
-08:49:28.579 [VRB] [PKT] DROP boundary dst=e5a2b1e7 ref=e5a2b1e7 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:49:28.586 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=243 type=1 ctx=0 hdr=1 dstt=0 hops=5 dst=775f1cd1 ref=775f1cd1 (BLACKLISTED) tid=682e34ed
-08:49:28.587 [VRB] [PKT] DROP boundary dst=775f1cd1 ref=775f1cd1 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:49:31.746 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=2ace8f08 (WHITELISTED) tid=none
-08:49:31.747 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=11 phl=100)
-08:49:31.749 [VRB] [PATH] REQ dst=2ace8f08 (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:49:31.751 [VRB] [HEAP-TEL] inbound: -920 bytes (heap=157168 pin=521 bma=11 phl=100 lt=5 revr=3)
-08:49:31.764 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=4df37696 (WHITELISTED) tid=none
-08:49:31.766 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=11 phl=100)
-08:49:31.768 [VRB] [PATH] REQ dst=4df37696 (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:49:31.770 [VRB] [HEAP-TEL] inbound: -920 bytes (heap=157012 pin=522 bma=11 phl=100 lt=5 revr=3)
-08:49:31.777 [VRB] [HEAP-TEL] jobs: 312 bytes (heap=158516)
-08:49:31.852 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=55449675 (WHITELISTED) tid=none
-08:49:31.853 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=11 phl=100)
-08:49:31.855 [VRB] [PATH] REQ dst=55449675 (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:49:31.857 [VRB] [HEAP-TEL] inbound: -796 bytes (heap=157568 pin=523 bma=11 phl=100 lt=5 revr=3)
-08:49:31.912 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=78374e13 (WHITELISTED) tid=none
-08:49:31.914 [VRB] [HEAP-TEL] boundary: -768 bytes (bma=11 phl=100)
-08:49:31.916 [VRB] [PATH] REQ dst=78374e13 (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:49:31.918 [VRB] [HEAP-TEL] inbound: -924 bytes (heap=157008 pin=524 bma=11 phl=100 lt=5 revr=3)
-08:49:31.960 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=9387240a (WHITELISTED) tid=none
-08:49:31.961 [VRB] [HEAP-TEL] boundary: -628 bytes (bma=11 phl=100)
-08:49:31.963 [VRB] [PATH] REQ dst=9387240a (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:49:31.965 [VRB] [HEAP-TEL] inbound: -788 bytes (heap=157132 pin=525 bma=11 phl=100 lt=5 revr=3)
-08:49:32.029 [VRB] [HEAP-TEL] jobs: 472 bytes (heap=158524)
-08:49:32.159 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=df3a673b (WHITELISTED) tid=none
-08:49:32.161 [VRB] [HEAP-TEL] boundary: -768 bytes (bma=11 phl=100)
-08:49:32.163 [VRB] [PATH] REQ dst=df3a673b (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:49:32.165 [VRB] [HEAP-TEL] inbound: -716 bytes (heap=157136 pin=526 bma=11 phl=100 lt=5 revr=3)
-08:49:32.169 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=cedce9ee (WHITELISTED) tid=none
-08:49:32.170 [VRB] [HEAP-TEL] boundary: -780 bytes (bma=11 phl=100)
-08:49:32.172 [VRB] [PATH] REQ dst=cedce9ee (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:49:32.174 [VRB] [HEAP-TEL] inbound: -936 bytes (heap=157004 pin=527 bma=11 phl=100 lt=5 revr=3)
-08:49:32.280 [VRB] [HEAP-TEL] jobs: 312 bytes (heap=158524)
-08:49:33.082 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=3d8c89cc (WHITELISTED) tid=none
-08:49:33.083 [VRB] [HEAP-TEL] boundary: -780 bytes (bma=11 phl=100)
-08:49:33.085 [VRB] [PATH] REQ dst=3d8c89cc (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:49:33.087 [VRB] [HEAP-TEL] inbound: -940 bytes (heap=157156 pin=528 bma=11 phl=100 lt=5 revr=3)
-08:49:33.216 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=a3dfea28 (WHITELISTED) tid=none
-08:49:33.217 [VRB] [HEAP-TEL] boundary: -788 bytes (bma=11 phl=100)
-08:49:33.219 [VRB] [PATH] REQ dst=a3dfea28 (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:49:33.221 [VRB] [HEAP-TEL] inbound: -948 bytes (heap=156988 pin=529 bma=11 phl=100 lt=5 revr=3)
-08:49:33.285 [VRB] [HEAP-TEL] jobs: 320 bytes (heap=158524)
-08:49:33.800 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=1833137b (WHITELISTED) tid=none
-08:49:33.802 [VRB] [HEAP-TEL] boundary: -780 bytes (bma=11 phl=100)
-08:49:33.804 [VRB] [PATH] REQ dst=1833137b (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:49:33.806 [VRB] [HEAP-TEL] inbound: -812 bytes (heap=157284 pin=530 bma=11 phl=100 lt=5 revr=3)
-08:49:34.039 [VRB] [HEAP-TEL] jobs: 156 bytes (heap=158540)
-08:49:36.868 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=183 type=1 ctx=0 hdr=1 dstt=0 hops=4 dst=69bddfce ref=69bddfce (BLACKLISTED) tid=5a94e5d8
-08:49:36.869 [VRB] [PKT] DROP boundary dst=69bddfce ref=69bddfce (BLACKLISTED) type=1 ctx=0 hdr=1
-08:49:36.885 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=e6702066 (WHITELISTED) tid=none
-08:49:36.887 [VRB] [HEAP-TEL] boundary: -776 bytes (bma=11 phl=100)
-08:49:36.889 [VRB] [PATH] REQ dst=e6702066 (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:49:36.891 [VRB] [HEAP-TEL] inbound: -932 bytes (heap=157456 pin=532 bma=11 phl=100 lt=5 revr=3)
-08:49:36.971 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=183 type=1 ctx=0 hdr=1 dstt=0 hops=5 dst=d31d83de ref=d31d83de (BLACKLISTED) tid=682e34ed
-08:49:36.973 [VRB] [PKT] DROP boundary dst=d31d83de ref=d31d83de (BLACKLISTED) type=1 ctx=0 hdr=1
-08:49:36.996 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=183 type=1 ctx=0 hdr=1 dstt=0 hops=3 dst=69bddfce ref=69bddfce (BLACKLISTED) tid=682e34ed
-08:49:36.998 [VRB] [PKT] DROP boundary dst=69bddfce ref=69bddfce (BLACKLISTED) type=1 ctx=0 hdr=1
-08:49:38.301 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=12e6692f (WHITELISTED) tid=none
-08:49:38.303 [VRB] [HEAP-TEL] boundary: -784 bytes (bma=11 phl=100)
-08:49:38.305 [VRB] [PATH] REQ dst=12e6692f (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:49:38.307 [VRB] [HEAP-TEL] inbound: -832 bytes (heap=157140 pin=535 bma=11 phl=100 lt=5 revr=3)
-08:49:38.309 [VRB] [HEAP-TEL] jobs: 316 bytes (heap=158532)
-08:49:41.072 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=308 type=1 ctx=0 hdr=1 dstt=0 hops=4 dst=fd37b6da ref=fd37b6da (BLACKLISTED) tid=682e34ed
-08:49:41.073 [VRB] [PKT] DROP boundary dst=fd37b6da ref=fd37b6da (BLACKLISTED) type=1 ctx=0 hdr=1
-08:49:41.082 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=308 type=1 ctx=0 hdr=1 dstt=0 hops=4 dst=fd37b6da ref=fd37b6da (BLACKLISTED) tid=5a94e5d8
-08:49:41.084 [VRB] [PKT] DROP boundary dst=fd37b6da ref=fd37b6da (BLACKLISTED) type=1 ctx=0 hdr=1
-08:49:41.473 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=20 type=0 ctx=250 hdr=0 dstt=3 hops=2 dst=57c25ccc ref=57c25ccc (WHITELISTED) tid=none
-08:49:41.475 [VRB] [HEAP-TEL] boundary: -620 bytes (bma=11 phl=100)
-08:49:41.476 [VRB] [LINK] XPORT pkt=57c25ccc (WHITELISTED) type=0 ctx=250 hops=2 recv=Interface[BackboneInterface3] entry_recv=Interface[BackboneInterface3] entry_out=Interface[LocalTcpInterface] rem=0 taken=2 val=1
-08:49:41.478 [VRB] [LINK] FWD dst=57c25ccc (WHITELISTED) to=Interface[LocalTcpInterface] size=20
-08:49:41.482 [VRB] [HEAP-TEL] inbound: -2444 bytes (heap=155992 pin=538 bma=11 phl=100 lt=5 revr=3)
-08:49:41.491 [VRB] [PKT] IN iface=Interface[LocalTcpInterface] sz=20 type=0 ctx=250 hdr=0 dstt=3 hops=1 dst=57c25ccc ref=57c25ccc (WHITELISTED) tid=none
-08:49:41.492 [VRB] [HEAP-TEL] boundary: -620 bytes (bma=11 phl=100)
-08:49:41.493 [VRB] [LINK] XPORT pkt=57c25ccc (WHITELISTED) type=0 ctx=250 hops=0 recv=Interface[LocalTcpInterface] entry_recv=Interface[BackboneInterface3] entry_out=Interface[LocalTcpInterface] rem=0 taken=2 val=1
-08:49:41.495 [VRB] [LINK] FWD dst=57c25ccc (WHITELISTED) to=Interface[BackboneInterface3] size=20
-08:49:41.499 [VRB] [HEAP-TEL] inbound: -2444 bytes (heap=155732 pin=539 bma=11 phl=100 lt=5 revr=3)
-08:49:42.196 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=232 type=1 ctx=0 hdr=1 dstt=0 hops=4 dst=c9d86898 ref=c9d86898 (BLACKLISTED) tid=5a94e5d8
-08:49:42.197 [VRB] [PKT] DROP boundary dst=c9d86898 ref=c9d86898 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:49:43.121 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=183 type=1 ctx=0 hdr=1 dstt=0 hops=4 dst=24f0c319 ref=24f0c319 (BLACKLISTED) tid=5a94e5d8
-08:49:43.123 [VRB] [PKT] DROP boundary dst=24f0c319 ref=24f0c319 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:49:43.168 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=229 type=1 ctx=0 hdr=1 dstt=0 hops=2 dst=1c6101a9 ref=1c6101a9 (BLACKLISTED) tid=682e34ed
-08:49:43.170 [VRB] [PKT] DROP boundary dst=1c6101a9 ref=1c6101a9 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:49:43.221 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=183 type=1 ctx=0 hdr=1 dstt=0 hops=5 dst=24f0c319 ref=24f0c319 (BLACKLISTED) tid=682e34ed
-08:49:43.222 [VRB] [PKT] DROP boundary dst=24f0c319 ref=24f0c319 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:49:43.228 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=232 type=1 ctx=0 hdr=1 dstt=0 hops=5 dst=c9d86898 ref=c9d86898 (BLACKLISTED) tid=682e34ed
-08:49:43.230 [VRB] [PKT] DROP boundary dst=c9d86898 ref=c9d86898 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:49:45.791 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=4d30bc17 (WHITELISTED) tid=none
-08:49:45.793 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=11 phl=100)
-08:49:45.795 [VRB] [PATH] REQ dst=4d30bc17 (WHITELISTED) from=Interface[BackboneInterface3] local=0 sz=48
-08:49:45.797 [VRB] [HEAP-TEL] inbound: -920 bytes (heap=157200 pin=545 bma=11 phl=100 lt=5 revr=3)
-08:49:45.886 [VRB] [HEAP-TEL] jobs: 156 bytes (heap=158532)
-08:49:46.295 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=214 type=1 ctx=0 hdr=1 dstt=0 hops=2 dst=781b8586 ref=781b8586 (BLACKLISTED) tid=682e34ed
-08:49:46.296 [VRB] [PKT] DROP boundary dst=781b8586 ref=781b8586 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:49:46.300 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=219bdcf0 (WHITELISTED) tid=none
-08:49:46.302 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=11 phl=100)
-08:49:46.304 [VRB] [PATH] REQ dst=219bdcf0 (WHITELISTED) from=Interface[BackboneInterface3] local=0 sz=48
-08:49:46.306 [VRB] [HEAP-TEL] inbound: -812 bytes (heap=157308 pin=547 bma=11 phl=100 lt=5 revr=3)
-08:49:46.389 [VRB] [HEAP-TEL] jobs: 160 bytes (heap=158532)
-08:49:46.476 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=214 type=1 ctx=0 hdr=1 dstt=0 hops=3 dst=781b8586 ref=781b8586 (BLACKLISTED) tid=5a94e5d8
-08:49:46.478 [VRB] [PKT] DROP boundary dst=781b8586 ref=781b8586 (BLACKLISTED) type=1 ctx=0 hdr=1
-08:49:47.127 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=4cce8a55 (WHITELISTED) tid=none
-08:49:47.129 [VRB] [HEAP-TEL] boundary: -788 bytes (bma=11 phl=100)
-08:49:47.131 [VRB] [PATH] REQ dst=4cce8a55 (WHITELISTED) from=Interface[BackboneInterface3] local=0 sz=48
-08:49:47.133 [VRB] [HEAP-TEL] inbound: -828 bytes (heap=157292 pin=549 bma=11 phl=100 lt=5 revr=3)
-08:49:47.142 [VRB] [HEAP-TEL] jobs: 156 bytes (heap=158520)
-08:49:48.439 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=183 type=1 ctx=0 hdr=1 dstt=0 hops=3 dst=2225585d ref=2225585d (BLACKLISTED) tid=682e34ed
-08:49:48.440 [VRB] [PKT] DROP boundary dst=2225585d ref=2225585d (BLACKLISTED) type=1 ctx=0 hdr=1
-08:49:48.446 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=183 type=1 ctx=0 hdr=1 dstt=0 hops=3 dst=2225585d ref=2225585d (BLACKLISTED) tid=5a94e5d8
-08:49:48.448 [VRB] [PKT] DROP boundary dst=2225585d ref=2225585d (BLACKLISTED) type=1 ctx=0 hdr=1
-08:49:50.492 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=315 type=1 ctx=0 hdr=1 dstt=0 hops=3 dst=6a9c3aed ref=6a9c3aed (BLACKLISTED) tid=682e34ed
-08:49:50.493 [VRB] [PKT] DROP boundary dst=6a9c3aed ref=6a9c3aed (BLACKLISTED) type=1 ctx=0 hdr=1
-08:49:50.818 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=dfdcba6e (WHITELISTED) tid=none
-08:49:50.820 [VRB] [HEAP-TEL] boundary: -768 bytes (bma=11 phl=100)
-08:49:50.822 [VRB] [PATH] REQ dst=dfdcba6e (WHITELISTED) from=Interface[BackboneInterface3] local=0 sz=48
-08:49:50.824 [VRB] [HEAP-TEL] inbound: -924 bytes (heap=157184 pin=553 bma=11 phl=100 lt=5 revr=3)
-08:49:50.832 [VRB] [PKT] IN iface=Interface[BackboneInterface3] sz=315 type=1 ctx=0 hdr=1 dstt=0 hops=3 dst=6a9c3aed ref=6a9c3aed (BLACKLISTED) tid=5a94e5d8
-08:49:50.833 [VRB] [PKT] DROP boundary dst=6a9c3aed ref=6a9c3aed (BLACKLISTED) type=1 ctx=0 hdr=1
-08:49:51.407 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=3c492092 (WHITELISTED) tid=none
-08:49:51.408 [VRB] [HEAP-TEL] boundary: -768 bytes (bma=11 phl=100)
-08:49:51.410 [VRB] [PATH] REQ dst=3c492092 (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:49:51.412 [VRB] [HEAP-TEL] inbound: -804 bytes (heap=157152 pin=555 bma=11 phl=100 lt=5 revr=3)
-08:49:51.414 [VRB] [HEAP-TEL] jobs: 312 bytes (heap=158528)
-08:49:53.261 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=a1f39935 (WHITELISTED) tid=none
-08:49:53.262 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=11 phl=100)
-08:49:53.264 [VRB] [PATH] REQ dst=a1f39935 (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:49:53.266 [VRB] [HEAP-TEL] inbound: -824 bytes (heap=157296 pin=556 bma=11 phl=100 lt=5 revr=3)
-08:49:53.270 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=9387240a (WHITELISTED) tid=none
-08:49:53.271 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=11 phl=100)
-08:49:53.273 [VRB] [PATH] REQ dst=9387240a (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:49:53.275 [VRB] [HEAP-TEL] inbound: -928 bytes (heap=157020 pin=557 bma=11 phl=100 lt=5 revr=3)
-08:49:53.321 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=67 type=0 ctx=0 hdr=0 dstt=2 hops=1 dst=6b9f6601 ref=df3a673b (WHITELISTED) tid=none
-08:49:53.323 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=11 phl=100)
-08:49:53.325 [VRB] [PATH] REQ dst=df3a673b (WHITELISTED) from=Interface[BackboneInterface1] local=0 sz=48
-08:49:53.327 [VRB] [HEAP-TEL] inbound: -916 bytes (heap=156864 pin=558 bma=11 phl=100 lt=5 revr=3)
-08:49:53.423 [VRB] [HEAP-TEL] jobs: 488 bytes (heap=158524)
-08:49:56.734 [VRB] [PKT] IN iface=Interface[BackboneInterface1] sz=202 type=1 ctx=0 hdr=1 dstt=0 hops=3 dst=3a626e54 ref=3a626e54 (BLACKLISTED) tid=682e34ed
-08:49:56.736 [VRB] [PKT] DROP boundary dst=3a626e54 ref=3a626e54 (BLACKLISTED) type=1 ctx=0 hdr=1
diff --git a/nohup.out b/nohup.out
new file mode 100644
index 0000000..55f8f53
--- /dev/null
+++ b/nohup.out
@@ -0,0 +1 @@
+Could not open input file: rns_transport.php
diff --git a/rnodethv4.log b/rnodethv4.log
index 33191ac..e69de29 100755
--- a/rnodethv4.log
+++ b/rnodethv4.log
@@ -1,2509 +0,0 @@
-21-05:36:32.533 [VRB] [HEAP-TEL] boundary: -748 bytes (bma=130 phl=22)
-21-05:36:32.538 [VRB] [HEAP-TEL] inbound: -1016 bytes (heap=34484 pin=2149 bma=130 phl=24 lt=0 revr=0)
-21-05:36:32.542 [VRB] [HEAP-TEL] boundary: -744 bytes (bma=132 phl=24)
-21-05:36:32.547 [VRB] [HEAP-TEL] inbound: -1020 bytes (heap=33916 pin=2150 bma=132 phl=26 lt=0 revr=0)
-21-05:36:32.551 [VRB] [HEAP-TEL] boundary: -744 bytes (bma=134 phl=26)
-21-05:36:32.556 [VRB] [HEAP-TEL] inbound: -1016 bytes (heap=33400 pin=2151 bma=134 phl=28 lt=0 revr=0)
-21-05:36:32.558 [VRB] [HEAP-TEL] jobs: 588 bytes (heap=34792)
-21-05:36:33.230 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=130 phl=28)
-21-05:36:33.235 [VRB] [HEAP-TEL] inbound: -1040 bytes (heap=33400 pin=2152 bma=130 phl=30 lt=0 revr=0)
-21-05:36:33.311 [VRB] [HEAP-TEL] jobs: 204 bytes (heap=34408)
-21-05:36:35.585 [VRB] [HEAP-TEL] boundary: -772 bytes (bma=130 phl=30)
-21-05:36:35.590 [VRB] [HEAP-TEL] inbound: -1048 bytes (heap=33008 pin=2153 bma=130 phl=32 lt=0 revr=0)
-21-05:36:37.146 [VRB] [HEAP-TEL] boundary: -744 bytes (bma=132 phl=32)
-21-05:36:37.151 [VRB] [HEAP-TEL] inbound: -1188 bytes (heap=32272 pin=2155 bma=132 phl=34 lt=0 revr=0)
-21-05:36:37.155 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=134 phl=34)
-21-05:36:37.160 [VRB] [HEAP-TEL] inbound: -1040 bytes (heap=31684 pin=2156 bma=134 phl=36 lt=0 revr=0)
-21-05:36:37.325 [VRB] [HEAP-TEL] boundary: -720 bytes (bma=136 phl=36)
-21-05:36:37.330 [VRB] [HEAP-TEL] inbound: -808 bytes (heap=31120 pin=2157 bma=136 phl=38 lt=0 revr=0)
-21-05:36:37.334 [VRB] [HEAP-TEL] boundary: -748 bytes (bma=138 phl=38)
-21-05:36:37.339 [VRB] [HEAP-TEL] inbound: -1180 bytes (heap=30392 pin=2158 bma=138 phl=40 lt=0 revr=0)
-21-05:36:37.341 [VRB] [HEAP-TEL] jobs: 964 bytes (heap=32160)
-21-05:36:37.428 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=130 phl=40)
-21-05:36:37.433 [VRB] [HEAP-TEL] inbound: -824 bytes (heap=30984 pin=2159 bma=130 phl=42 lt=0 revr=0)
-21-05:36:37.480 [VRB] [HEAP-TEL] boundary: -788 bytes (bma=132 phl=42)
-21-05:36:37.485 [VRB] [HEAP-TEL] inbound: -1056 bytes (heap=30172 pin=2160 bma=132 phl=44 lt=0 revr=0)
-21-05:36:37.583 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=134 phl=44)
-21-05:36:37.588 [VRB] [HEAP-TEL] inbound: -1028 bytes (heap=29596 pin=2161 bma=134 phl=46 lt=0 revr=0)
-21-05:36:37.593 [VRB] [HEAP-TEL] jobs: 592 bytes (heap=30992)
-21-05:36:37.733 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=130 phl=46)
-21-05:36:37.738 [VRB] [HEAP-TEL] inbound: -1196 bytes (heap=29604 pin=2162 bma=130 phl=48 lt=0 revr=0)
-21-05:36:37.742 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=132 phl=48)
-21-05:36:37.747 [VRB] [HEAP-TEL] inbound: -1028 bytes (heap=29076 pin=2163 bma=132 phl=50 lt=0 revr=0)
-21-05:36:37.839 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=134 phl=50)
-21-05:36:37.845 [VRB] [HEAP-TEL] inbound: -1072 bytes (heap=28216 pin=2164 bma=134 phl=52 lt=0 revr=0)
-21-05:36:37.849 [VRB] [HEAP-TEL] boundary: -768 bytes (bma=136 phl=52)
-21-05:36:37.854 [VRB] [HEAP-TEL] inbound: -1036 bytes (heap=27688 pin=2165 bma=136 phl=54 lt=0 revr=0)
-21-05:36:37.856 [VRB] [HEAP-TEL] jobs: 776 bytes (heap=29300)
-21-05:36:38.039 [VRB] [HEAP-TEL] boundary: -744 bytes (bma=130 phl=54)
-21-05:36:38.044 [VRB] [HEAP-TEL] inbound: -1176 bytes (heap=27736 pin=2166 bma=130 phl=56 lt=0 revr=0)
-21-05:36:38.099 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=132 phl=56)
-21-05:36:38.104 [VRB] [HEAP-TEL] inbound: -1024 bytes (heap=27164 pin=2167 bma=132 phl=58 lt=0 revr=0)
-21-05:36:38.107 [VRB] [HEAP-TEL] jobs: 380 bytes (heap=28384)
-21-05:36:38.190 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=130 phl=58)
-21-05:36:38.194 [VRB] [HEAP-TEL] inbound: -1168 bytes (heap=26828 pin=2168 bma=130 phl=60 lt=0 revr=0)
-
-[WATCHDOG] HEAP PRESSURE: 27668 < 28000 — shedding announce/cache state
-21-05:36:38.372 [VRB] mem: 39184 (15%) [-1540] flash: 3477504 (98%) [0] paths: 3 dsts: 5 revr: 0 annc: 0 held: 0
-21-05:36:38.373 [VRB] preqs: 924 dpreqs: 0 ppreqs: 0 dprt: 0 cdsts: 2 chshs: 2
-21-05:36:38.374 [VRB] phl: 0 rcp: 0 lt: 0 pl: 0 al: 0 tun: 0
-21-05:36:38.375 [VRB] bla: 0 bma: 130
-21-05:36:38.376 [VRB] pin: 2168 pout: 1892 padd: 0 dpr: 2 ikd: 0 ia: 0
-
-[WATCHDOG] Heap after shedding: 39184
-[WATCHDOG] Heap recovered: 39184 > 34000 — restored steady-state caps
-21-05:36:38.404 [VRB] [HEAP-TEL] jobs: 184 bytes (heap=39368)
-21-05:36:38.757 [VRB] [HEAP-TEL] boundary: -744 bytes (bma=130 phl=0)
-21-05:36:38.762 [VRB] [HEAP-TEL] inbound: -1008 bytes (heap=38216 pin=2169 bma=130 phl=2 lt=0 revr=0)
-21-05:36:38.907 [VRB] [HEAP-TEL] jobs: 204 bytes (heap=39016)
-21-05:36:39.372 [VRB] [HEAP-TEL] boundary: -744 bytes (bma=130 phl=2)
-21-05:36:39.375 [VRB] [HEAP-TEL] inbound: -1020 bytes (heap=37644 pin=2170 bma=130 phl=4 lt=0 revr=0)
-21-05:36:39.409 [VRB] [HEAP-TEL] jobs: 184 bytes (heap=38632)
-21-05:36:39.781 [VRB] [HEAP-TEL] boundary: -744 bytes (bma=130 phl=4)
-21-05:36:39.786 [VRB] [HEAP-TEL] inbound: -1184 bytes (heap=37096 pin=2171 bma=130 phl=6 lt=0 revr=0)
-21-05:36:39.837 [VRB] [HEAP-TEL] boundary: -744 bytes (bma=132 phl=6)
-21-05:36:39.842 [VRB] [HEAP-TEL] inbound: -1164 bytes (heap=36384 pin=2172 bma=132 phl=8 lt=0 revr=0)
-21-05:36:39.911 [VRB] [HEAP-TEL] jobs: 368 bytes (heap=37556)
-21-05:36:41.934 [VRB] [HEAP-TEL] boundary: -536 bytes (bma=130 phl=8)
-21-05:36:41.939 [VRB] [HEAP-TEL] inbound: -808 bytes (heap=36188 pin=2174 bma=130 phl=10 lt=0 revr=0)
-21-05:36:41.943 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=132 phl=10)
-21-05:36:41.948 [VRB] [HEAP-TEL] inbound: -1028 bytes (heap=35612 pin=2175 bma=132 phl=12 lt=0 revr=0)
-21-05:36:42.170 [VRB] [HEAP-TEL] jobs: 368 bytes (heap=36784)
-21-05:36:42.582 [VRB] [HEAP-TEL] boundary: -744 bytes (bma=130 phl=12)
-21-05:36:42.588 [VRB] [HEAP-TEL] inbound: -1380 bytes (heap=35052 pin=2176 bma=130 phl=14 lt=0 revr=0)
-21-05:36:42.653 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=132 phl=14)
-21-05:36:42.658 [VRB] [HEAP-TEL] inbound: -1028 bytes (heap=34684 pin=2177 bma=132 phl=16 lt=0 revr=0)
-21-05:36:42.673 [VRB] [HEAP-TEL] jobs: 372 bytes (heap=35860)
-21-05:36:42.706 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=130 phl=16)
-21-05:36:42.711 [VRB] [HEAP-TEL] inbound: -1168 bytes (heap=34548 pin=2178 bma=130 phl=18 lt=0 revr=0)
-21-05:36:42.924 [VRB] [HEAP-TEL] jobs: 200 bytes (heap=35344)
-21-05:36:43.774 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=130 phl=18)
-21-05:36:43.779 [VRB] [HEAP-TEL] inbound: -1184 bytes (heap=34016 pin=2180 bma=130 phl=20 lt=0 revr=0)
-21-05:36:43.928 [VRB] [HEAP-TEL] jobs: 208 bytes (heap=34820)
-21-05:36:44.115 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=130 phl=20)
-21-05:36:44.120 [VRB] [HEAP-TEL] inbound: -1196 bytes (heap=33480 pin=2181 bma=130 phl=22 lt=0 revr=0)
-21-05:36:44.180 [VRB] [HEAP-TEL] jobs: 196 bytes (heap=34272)
-21-05:36:44.919 [VRB] [HEAP-TEL] boundary: -744 bytes (bma=130 phl=22)
-21-05:36:44.924 [VRB] [HEAP-TEL] inbound: -1180 bytes (heap=32740 pin=2182 bma=130 phl=24 lt=0 revr=0)
-21-05:36:44.933 [VRB] [HEAP-TEL] jobs: 184 bytes (heap=33728)
-21-05:36:46.130 [VRB] [HEAP-TEL] boundary: -744 bytes (bma=130 phl=24)
-21-05:36:46.136 [VRB] [HEAP-TEL] inbound: -1020 bytes (heap=32356 pin=2183 bma=130 phl=26 lt=0 revr=0)
-21-05:36:46.188 [VRB] [HEAP-TEL] jobs: 184 bytes (heap=33344)
-21-05:36:46.541 [VRB] [HEAP-TEL] boundary: -744 bytes (bma=130 phl=26)
-21-05:36:46.547 [VRB] [HEAP-TEL] inbound: -1020 bytes (heap=32180 pin=2184 bma=130 phl=28 lt=0 revr=0)
-21-05:36:46.691 [VRB] [HEAP-TEL] jobs: 184 bytes (heap=32960)
-21-05:36:46.757 [VRB] [HEAP-TEL] boundary: -744 bytes (bma=130 phl=28)
-21-05:36:46.762 [VRB] [HEAP-TEL] inbound: -1164 bytes (heap=31444 pin=2185 bma=130 phl=30 lt=0 revr=0)
-21-05:36:46.766 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=132 phl=30)
-21-05:36:46.771 [VRB] [HEAP-TEL] inbound: -1028 bytes (heap=30868 pin=2186 bma=132 phl=32 lt=0 revr=0)
-21-05:36:46.943 [VRB] [HEAP-TEL] jobs: 376 bytes (heap=32048)
-21-05:36:46.950 [VRB] [HEAP-TEL] boundary: -536 bytes (bma=130 phl=32)
-21-05:36:46.955 [VRB] [HEAP-TEL] inbound: -952 bytes (heap=30536 pin=2187 bma=130 phl=34 lt=0 revr=0)
-21-05:36:46.959 [VRB] [HEAP-TEL] boundary: -748 bytes (bma=132 phl=34)
-21-05:36:46.964 [VRB] [HEAP-TEL] inbound: -1024 bytes (heap=29964 pin=2188 bma=132 phl=36 lt=0 revr=0)
-21-05:36:47.051 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=134 phl=36)
-21-05:36:47.056 [VRB] [HEAP-TEL] inbound: -1036 bytes (heap=29588 pin=2189 bma=134 phl=38 lt=0 revr=0)
-21-05:36:47.092 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=136 phl=38)
-21-05:36:47.097 [VRB] [HEAP-TEL] inbound: -1024 bytes (heap=28808 pin=2190 bma=136 phl=40 lt=0 revr=0)
-21-05:36:47.194 [VRB] [HEAP-TEL] jobs: 764 bytes (heap=30384)
-21-05:36:47.259 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=130 phl=40)
-21-05:36:47.264 [VRB] [HEAP-TEL] inbound: -1044 bytes (heap=28988 pin=2191 bma=130 phl=42 lt=0 revr=0)
-21-05:36:47.359 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=132 phl=42)
-21-05:36:47.364 [VRB] [HEAP-TEL] inbound: -1172 bytes (heap=28268 pin=2192 bma=132 phl=44 lt=0 revr=0)
-21-05:36:47.446 [VRB] [HEAP-TEL] jobs: 384 bytes (heap=29456)
-21-05:36:48.795 [VRB] [HEAP-TEL] boundary: -776 bytes (bma=130 phl=44)
-21-05:36:48.800 [VRB] [HEAP-TEL] inbound: -1056 bytes (heap=28048 pin=2193 bma=130 phl=46 lt=0 revr=0)
-21-05:36:48.952 [VRB] [HEAP-TEL] jobs: 196 bytes (heap=29048)
-21-05:36:49.101 [VRB] [HEAP-TEL] boundary: -776 bytes (bma=130 phl=46)
-21-05:36:49.107 [VRB] [HEAP-TEL] inbound: -1060 bytes (heap=27636 pin=2194 bma=130 phl=48 lt=0 revr=0)
-21-05:36:49.203 [VRB] [HEAP-TEL] jobs: 192 bytes (heap=28632)
-21-05:36:49.932 [VRB] [HEAP-TEL] boundary: -768 bytes (bma=130 phl=48)
-21-05:36:49.937 [VRB] [HEAP-TEL] inbound: -1196 bytes (heap=27092 pin=2195 bma=130 phl=50 lt=0 revr=0)
-
-[WATCHDOG] HEAP PRESSURE: 27896 < 28000 — shedding announce/cache state
-21-05:36:50.116 [VRB] mem: 37512 (14%) [-1672] flash: 3477504 (98%) [0] paths: 3 dsts: 5 revr: 0 annc: 0 held: 0
-21-05:36:50.117 [VRB] preqs: 935 dpreqs: 0 ppreqs: 0 dprt: 0 cdsts: 2 chshs: 2
-21-05:36:50.118 [VRB] phl: 0 rcp: 0 lt: 0 pl: 0 al: 0 tun: 0
-21-05:36:50.119 [VRB] bla: 0 bma: 130
-21-05:36:50.120 [VRB] pin: 2195 pout: 1917 padd: 0 dpr: 2 ikd: 0 ia: 0
-
-[WATCHDOG] Heap after shedding: 37512
-[WATCHDOG] Heap recovered: 37512 > 34000 — restored steady-state caps
-21-05:36:50.148 [VRB] [HEAP-TEL] jobs: 184 bytes (heap=37696)
-21-05:36:50.329 [VRB] [HEAP-TEL] boundary: -744 bytes (bma=130 phl=0)
-21-05:36:50.334 [VRB] [HEAP-TEL] inbound: -1208 bytes (heap=36136 pin=2196 bma=130 phl=2 lt=0 revr=0)
-21-05:36:50.338 [VRB] [HEAP-TEL] boundary: -744 bytes (bma=132 phl=2)
-21-05:36:50.343 [VRB] [HEAP-TEL] inbound: -1028 bytes (heap=35600 pin=2197 bma=132 phl=4 lt=0 revr=0)
-21-05:36:50.399 [VRB] [HEAP-TEL] jobs: 372 bytes (heap=36776)
-21-05:36:50.840 [VRB] [HEAP-TEL] boundary: -744 bytes (bma=130 phl=4)
-21-05:36:50.846 [VRB] [HEAP-TEL] inbound: -1164 bytes (heap=35260 pin=2199 bma=130 phl=6 lt=0 revr=0)
-21-05:36:50.906 [VRB] [HEAP-TEL] jobs: 184 bytes (heap=36248)
-21-05:36:51.153 [VRB] [HEAP-TEL] boundary: -748 bytes (bma=130 phl=6)
-21-05:36:51.158 [VRB] [HEAP-TEL] inbound: -1024 bytes (heap=34872 pin=2200 bma=130 phl=8 lt=0 revr=0)
-21-05:36:51.160 [VRB] [HEAP-TEL] jobs: 188 bytes (heap=35864)
-21-05:36:51.764 [VRB] [HEAP-TEL] boundary: -748 bytes (bma=130 phl=8)
-21-05:36:51.769 [VRB] [HEAP-TEL] inbound: -1024 bytes (heap=34488 pin=2201 bma=130 phl=10 lt=0 revr=0)
-21-05:36:51.791 [VRB] [HEAP-TEL] boundary: -568 bytes (bma=132 phl=10)
-21-05:36:51.796 [VRB] [HEAP-TEL] inbound: -996 bytes (heap=33736 pin=2202 bma=132 phl=12 lt=0 revr=0)
-21-05:36:51.914 [VRB] [HEAP-TEL] jobs: 372 bytes (heap=34912)
-21-05:36:51.965 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=130 phl=12)
-21-05:36:51.970 [VRB] [HEAP-TEL] inbound: -1176 bytes (heap=33384 pin=2203 bma=130 phl=14 lt=0 revr=0)
-21-05:36:52.140 [VRB] [HEAP-TEL] boundary: -768 bytes (bma=132 phl=14)
-21-05:36:52.145 [VRB] [HEAP-TEL] inbound: -1032 bytes (heap=33012 pin=2204 bma=132 phl=16 lt=0 revr=0)
-21-05:36:52.222 [VRB] [HEAP-TEL] boundary: -780 bytes (bma=134 phl=16)
-21-05:36:52.227 [VRB] [HEAP-TEL] inbound: -1048 bytes (heap=32232 pin=2206 bma=134 phl=18 lt=0 revr=0)
-21-05:36:52.375 [VRB] [HEAP-TEL] boundary: -744 bytes (bma=136 phl=18)
-21-05:36:52.380 [VRB] [HEAP-TEL] inbound: -812 bytes (heap=31872 pin=2207 bma=136 phl=20 lt=0 revr=0)
-21-05:36:52.406 [VRB] [HEAP-TEL] boundary: -744 bytes (bma=138 phl=20)
-21-05:36:52.411 [VRB] [HEAP-TEL] inbound: -1020 bytes (heap=31096 pin=2208 bma=138 phl=22 lt=0 revr=0)
-21-05:36:52.428 [VRB] [HEAP-TEL] jobs: 976 bytes (heap=32876)
-21-05:36:52.581 [VRB] [HEAP-TEL] boundary: -744 bytes (bma=130 phl=22)
-21-05:36:52.586 [VRB] [HEAP-TEL] inbound: -1024 bytes (heap=31708 pin=2209 bma=130 phl=24 lt=0 revr=0)
-21-05:36:52.609 [VRB] [HEAP-TEL] boundary: -768 bytes (bma=132 phl=24)
-21-05:36:52.614 [VRB] [HEAP-TEL] inbound: -1044 bytes (heap=30908 pin=2210 bma=132 phl=26 lt=0 revr=0)
-21-05:36:52.679 [VRB] [HEAP-TEL] jobs: 368 bytes (heap=32080)
-21-05:36:52.793 [VRB] [HEAP-TEL] boundary: -744 bytes (bma=130 phl=26)
-21-05:36:52.798 [VRB] [HEAP-TEL] inbound: -1016 bytes (heap=30712 pin=2211 bma=130 phl=28 lt=0 revr=0)
-21-05:36:52.892 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=132 phl=28)
-21-05:36:52.897 [VRB] [HEAP-TEL] inbound: -1040 bytes (heap=30124 pin=2212 bma=132 phl=30 lt=0 revr=0)
-21-05:36:52.931 [VRB] [HEAP-TEL] jobs: 376 bytes (heap=31304)
-21-05:36:53.403 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=130 phl=30)
-21-05:36:53.408 [VRB] [HEAP-TEL] inbound: -1024 bytes (heap=30136 pin=2213 bma=130 phl=32 lt=0 revr=0)
-21-05:36:53.434 [VRB] [HEAP-TEL] jobs: 208 bytes (heap=30940)
-21-05:36:53.442 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=130 phl=32)
-21-05:36:53.447 [VRB] [HEAP-TEL] inbound: -808 bytes (heap=29780 pin=2214 bma=130 phl=34 lt=0 revr=0)
-21-05:36:53.606 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=132 phl=34)
-21-05:36:53.611 [VRB] [HEAP-TEL] inbound: -780 bytes (heap=29036 pin=2215 bma=132 phl=36 lt=0 revr=0)
-21-05:36:53.641 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=134 phl=36)
-21-05:36:53.646 [VRB] [HEAP-TEL] inbound: -1188 bytes (heap=28300 pin=2217 bma=134 phl=38 lt=0 revr=0)
-21-05:36:53.686 [VRB] [HEAP-TEL] jobs: 576 bytes (heap=29484)
-21-05:36:53.879 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=130 phl=38)
-21-05:36:53.884 [VRB] [HEAP-TEL] inbound: -1180 bytes (heap=27940 pin=2218 bma=130 phl=40 lt=0 revr=0)
-21-05:36:53.938 [VRB] [HEAP-TEL] jobs: 184 bytes (heap=28944)
-21-05:36:54.015 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=130 phl=40)
-21-05:36:54.020 [VRB] [HEAP-TEL] inbound: -1200 bytes (heap=27380 pin=2219 bma=130 phl=42 lt=0 revr=0)
-21-05:36:54.189 [VRB] [HEAP-TEL] jobs: 184 bytes (heap=28380)
-21-05:36:54.527 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=130 phl=42)
-21-05:36:54.532 [VRB] [HEAP-TEL] inbound: -1196 bytes (heap=27040 pin=2220 bma=130 phl=44 lt=0 revr=0)
-
-[WATCHDOG] HEAP PRESSURE: 27640 < 28000 — shedding announce/cache state
-21-05:36:54.713 [VRB] mem: 36064 (14%) [-1448] flash: 3477504 (98%) [0] paths: 3 dsts: 5 revr: 0 annc: 0 held: 0
-21-05:36:54.714 [VRB] preqs: 944 dpreqs: 0 ppreqs: 0 dprt: 0 cdsts: 2 chshs: 2
-21-05:36:54.715 [VRB] phl: 0 rcp: 0 lt: 0 pl: 0 al: 0 tun: 0
-21-05:36:54.716 [VRB] bla: 0 bma: 130
-21-05:36:54.717 [VRB] pin: 2220 pout: 1939 padd: 0 dpr: 2 ikd: 0 ia: 0
-
-[WATCHDOG] Heap after shedding: 36064
-[WATCHDOG] Heap recovered: 36064 > 34000 — restored steady-state caps
-21-05:36:54.746 [VRB] [HEAP-TEL] jobs: 184 bytes (heap=36248)
-21-05:36:55.962 [VRB] [HEAP-TEL] boundary: -744 bytes (bma=130 phl=0)
-21-05:36:55.967 [VRB] [HEAP-TEL] inbound: -1024 bytes (heap=34872 pin=2222 bma=130 phl=2 lt=0 revr=0)
-21-05:36:56.001 [VRB] [HEAP-TEL] jobs: 184 bytes (heap=35860)
-21-05:36:56.473 [VRB] [HEAP-TEL] boundary: -748 bytes (bma=130 phl=2)
-21-05:36:56.478 [VRB] [HEAP-TEL] inbound: -1012 bytes (heap=34496 pin=2223 bma=130 phl=4 lt=0 revr=0)
-21-05:36:56.504 [VRB] [HEAP-TEL] jobs: 196 bytes (heap=35496)
-21-05:36:56.642 [VRB] [HEAP-TEL] boundary: -744 bytes (bma=130 phl=4)
-21-05:36:56.647 [VRB] [HEAP-TEL] inbound: -1160 bytes (heap=34192 pin=2224 bma=130 phl=6 lt=0 revr=0)
-21-05:36:56.756 [VRB] [HEAP-TEL] jobs: 212 bytes (heap=34852)
-21-05:36:56.932 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=130 phl=6)
-21-05:36:56.936 [VRB] [HEAP-TEL] inbound: -1032 bytes (heap=33616 pin=2225 bma=130 phl=8 lt=0 revr=0)
-21-05:36:57.007 [VRB] [HEAP-TEL] jobs: 184 bytes (heap=34604)
-21-05:36:57.420 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=130 phl=8)
-21-05:36:57.426 [VRB] [HEAP-TEL] inbound: -1072 bytes (heap=33180 pin=2226 bma=130 phl=10 lt=0 revr=0)
-21-05:36:57.430 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=132 phl=10)
-21-05:36:57.435 [VRB] [HEAP-TEL] inbound: -1204 bytes (heap=32472 pin=2227 bma=132 phl=12 lt=0 revr=0)
-21-05:36:57.510 [VRB] [HEAP-TEL] jobs: 384 bytes (heap=33664)
-21-05:36:57.601 [VRB] [HEAP-TEL] boundary: -744 bytes (bma=130 phl=12)
-21-05:36:57.606 [VRB] [HEAP-TEL] inbound: -1160 bytes (heap=32152 pin=2228 bma=130 phl=14 lt=0 revr=0)
-21-05:36:57.670 [VRB] [HEAP-TEL] boundary: -744 bytes (bma=132 phl=14)
-21-05:36:57.675 [VRB] [HEAP-TEL] inbound: -1160 bytes (heap=31444 pin=2229 bma=132 phl=16 lt=0 revr=0)
-21-05:36:57.761 [VRB] [HEAP-TEL] jobs: 372 bytes (heap=32620)
-21-05:36:57.805 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=130 phl=16)
-21-05:36:57.810 [VRB] [HEAP-TEL] inbound: -984 bytes (heap=31284 pin=2230 bma=130 phl=18 lt=0 revr=0)
-21-05:36:57.818 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=132 phl=18)
-21-05:36:57.823 [VRB] [HEAP-TEL] inbound: -1024 bytes (heap=30508 pin=2231 bma=132 phl=20 lt=0 revr=0)
-21-05:36:57.936 [VRB] [HEAP-TEL] boundary: -748 bytes (bma=134 phl=20)
-21-05:36:57.941 [VRB] [HEAP-TEL] inbound: -1168 bytes (heap=29792 pin=2232 bma=134 phl=22 lt=0 revr=0)
-21-05:36:58.013 [VRB] [HEAP-TEL] jobs: 584 bytes (heap=31180)
-21-05:36:58.111 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=130 phl=22)
-21-05:36:58.116 [VRB] [HEAP-TEL] inbound: -1028 bytes (heap=30008 pin=2233 bma=130 phl=24 lt=0 revr=0)
-21-05:36:58.264 [VRB] [HEAP-TEL] jobs: 184 bytes (heap=30788)
-21-05:36:59.135 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=130 phl=24)
-21-05:36:59.140 [VRB] [HEAP-TEL] inbound: -1024 bytes (heap=29412 pin=2234 bma=130 phl=26 lt=0 revr=0)
-21-05:36:59.268 [VRB] [HEAP-TEL] jobs: 188 bytes (heap=30404)
-21-05:36:59.545 [VRB] [HEAP-TEL] boundary: -772 bytes (bma=130 phl=26)
-21-05:36:59.550 [VRB] [HEAP-TEL] inbound: -1200 bytes (heap=29060 pin=2236 bma=130 phl=28 lt=0 revr=0)
-21-05:36:59.770 [VRB] [HEAP-TEL] jobs: 200 bytes (heap=29856)
-21-05:36:59.959 [VRB] [HEAP-TEL] boundary: -784 bytes (bma=130 phl=28)
-21-05:36:59.964 [VRB] [HEAP-TEL] inbound: -1212 bytes (heap=28288 pin=2237 bma=130 phl=30 lt=0 revr=0)
-21-05:37:00.022 [VRB] [HEAP-TEL] jobs: 184 bytes (heap=29280)
-21-05:37:00.365 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=130 phl=30)
-21-05:37:00.370 [VRB] [HEAP-TEL] inbound: -1164 bytes (heap=27760 pin=2238 bma=130 phl=32 lt=0 revr=0)
-21-05:37:00.525 [VRB] [HEAP-TEL] jobs: 196 bytes (heap=28764)
-21-05:37:00.773 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=130 phl=32)
-21-05:37:00.778 [VRB] [HEAP-TEL] inbound: -1032 bytes (heap=27380 pin=2239 bma=130 phl=34 lt=0 revr=0)
-21-05:37:00.780 [VRB] [HEAP-TEL] jobs: 196 bytes (heap=28380)
-21-05:37:01.285 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=130 phl=34)
-21-05:37:01.290 [VRB] [HEAP-TEL] inbound: -1196 bytes (heap=27040 pin=2240 bma=130 phl=36 lt=0 revr=0)
-
-[WATCHDOG] HEAP PRESSURE: 27636 < 28000 — shedding announce/cache state
-21-05:37:01.471 [VRB] mem: 34572 (13%) [-1492] flash: 3477504 (98%) [0] paths: 3 dsts: 5 revr: 0 annc: 0 held: 0
-21-05:37:01.472 [VRB] preqs: 954 dpreqs: 0 ppreqs: 0 dprt: 0 cdsts: 2 chshs: 2
-21-05:37:01.473 [VRB] phl: 0 rcp: 0 lt: 0 pl: 0 al: 0 tun: 0
-21-05:37:01.474 [VRB] bla: 0 bma: 130
-21-05:37:01.475 [VRB] pin: 2240 pout: 1957 padd: 0 dpr: 2 ikd: 0 ia: 0
-
-[WATCHDOG] Heap after shedding: 34532
-[WATCHDOG] Heap recovered: 34532 > 34000 — restored steady-state caps
-21-05:37:01.479 [VRB] [HEAP-TEL] boundary: -744 bytes (bma=132 phl=0)
-21-05:37:01.485 [VRB] [HEAP-TEL] inbound: -1008 bytes (heap=33420 pin=2241 bma=132 phl=2 lt=0 revr=0)
-21-05:37:01.533 [VRB] [HEAP-TEL] jobs: 368 bytes (heap=34384)
-21-05:37:02.412 [VRB] [HEAP-TEL] boundary: -744 bytes (bma=130 phl=2)
-21-05:37:02.417 [VRB] [HEAP-TEL] inbound: -1008 bytes (heap=33232 pin=2242 bma=130 phl=4 lt=0 revr=0)
-21-05:37:02.434 [VRB] [HEAP-TEL] boundary: -748 bytes (bma=132 phl=4)
-21-05:37:02.439 [VRB] [HEAP-TEL] inbound: -1172 bytes (heap=32304 pin=2243 bma=132 phl=6 lt=0 revr=0)
-21-05:37:02.685 [VRB] [HEAP-TEL] boundary: -788 bytes (bma=134 phl=6)
-21-05:37:02.690 [VRB] [HEAP-TEL] inbound: -1052 bytes (heap=31704 pin=2245 bma=134 phl=8 lt=0 revr=0)
-21-05:37:02.789 [VRB] [HEAP-TEL] jobs: 552 bytes (heap=33064)
-21-05:37:03.231 [VRB] [HEAP-TEL] boundary: -744 bytes (bma=130 phl=8)
-21-05:37:03.236 [VRB] [HEAP-TEL] inbound: -1012 bytes (heap=31700 pin=2246 bma=130 phl=10 lt=0 revr=0)
-21-05:37:03.292 [VRB] [HEAP-TEL] jobs: 204 bytes (heap=32708)
-21-05:37:03.417 [VRB] [HEAP-TEL] boundary: -748 bytes (bma=130 phl=10)
-21-05:37:03.422 [VRB] [HEAP-TEL] inbound: -1176 bytes (heap=31180 pin=2247 bma=130 phl=12 lt=0 revr=0)
-21-05:37:03.543 [VRB] [HEAP-TEL] jobs: 184 bytes (heap=32168)
-21-05:37:03.712 [VRB] [HEAP-TEL] boundary: -772 bytes (bma=130 phl=12)
-21-05:37:03.717 [VRB] [HEAP-TEL] inbound: -1040 bytes (heap=30984 pin=2248 bma=130 phl=14 lt=0 revr=0)
-21-05:37:03.794 [VRB] [HEAP-TEL] jobs: 184 bytes (heap=31764)
-21-05:37:04.358 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=130 phl=14)
-21-05:37:04.363 [VRB] [HEAP-TEL] inbound: -1164 bytes (heap=30248 pin=2249 bma=130 phl=16 lt=0 revr=0)
-21-05:37:04.548 [VRB] [HEAP-TEL] jobs: 188 bytes (heap=31240)
-21-05:37:05.701 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=130 phl=16)
-21-05:37:05.706 [VRB] [HEAP-TEL] inbound: -1180 bytes (heap=29292 pin=2251 bma=130 phl=18 lt=0 revr=0)
-21-05:37:05.726 [VRB] [HEAP-TEL] boundary: -748 bytes (bma=132 phl=18)
-21-05:37:05.731 [VRB] [HEAP-TEL] inbound: -1180 bytes (heap=29188 pin=2252 bma=132 phl=20 lt=0 revr=0)
-21-05:37:05.803 [VRB] [HEAP-TEL] jobs: 368 bytes (heap=30152)
-21-05:37:07.430 [VRB] [HEAP-TEL] boundary: -748 bytes (bma=130 phl=20)
-21-05:37:07.435 [VRB] [HEAP-TEL] inbound: -1016 bytes (heap=28992 pin=2253 bma=130 phl=22 lt=0 revr=0)
-21-05:37:07.440 [VRB] [HEAP-TEL] boundary: -748 bytes (bma=132 phl=22)
-21-05:37:07.445 [VRB] [HEAP-TEL] inbound: -1024 bytes (heap=28420 pin=2254 bma=132 phl=24 lt=0 revr=0)
-21-05:37:07.561 [VRB] [HEAP-TEL] jobs: 368 bytes (heap=29384)
-21-05:37:07.636 [VRB] [HEAP-TEL] boundary: -748 bytes (bma=130 phl=24)
-21-05:37:07.641 [VRB] [HEAP-TEL] inbound: -1028 bytes (heap=28212 pin=2255 bma=130 phl=26 lt=0 revr=0)
-21-05:37:07.812 [VRB] [HEAP-TEL] jobs: 184 bytes (heap=28992)
-21-05:37:08.453 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=130 phl=26)
-21-05:37:08.458 [VRB] [HEAP-TEL] inbound: -1036 bytes (heap=27812 pin=2256 bma=130 phl=28 lt=0 revr=0)
-21-05:37:08.470 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=132 phl=28)
-21-05:37:08.475 [VRB] [HEAP-TEL] inbound: -1184 bytes (heap=26880 pin=2257 bma=132 phl=30 lt=0 revr=0)
-
-[WATCHDOG] HEAP PRESSURE: 27692 < 28000 — shedding announce/cache state
-21-05:37:08.653 [VRB] mem: 33444 (13%) [-1128] flash: 3477504 (98%) [0] paths: 3 dsts: 5 revr: 0 annc: 0 held: 0
-21-05:37:08.654 [VRB] preqs: 960 dpreqs: 0 ppreqs: 0 dprt: 0 cdsts: 2 chshs: 2
-21-05:37:08.655 [VRB] phl: 0 rcp: 0 lt: 0 pl: 0 al: 0 tun: 0
-21-05:37:08.656 [VRB] bla: 0 bma: 132
-21-05:37:08.657 [VRB] pin: 2257 pout: 1972 padd: 0 dpr: 2 ikd: 0 ia: 0
-
-[WATCHDOG] Heap after shedding: 33444
-21-05:37:08.685 [VRB] [HEAP-TEL] jobs: 376 bytes (heap=33828)
-21-05:37:08.970 [VRB] [HEAP-TEL] boundary: -744 bytes (bma=130 phl=0)
-21-05:37:08.975 [VRB] [HEAP-TEL] inbound: -1164 bytes (heap=32312 pin=2258 bma=130 phl=2 lt=0 revr=0)
-21-05:37:09.188 [VRB] [HEAP-TEL] jobs: 184 bytes (heap=33300)
-21-05:37:09.784 [VRB] [HEAP-TEL] boundary: -744 bytes (bma=130 phl=2)
-21-05:37:09.789 [VRB] [HEAP-TEL] inbound: -1168 bytes (heap=31988 pin=2259 bma=130 phl=4 lt=0 revr=0)
-21-05:37:09.929 [VRB] [HEAP-TEL] boundary: -780 bytes (bma=132 phl=4)
-21-05:37:09.934 [VRB] [HEAP-TEL] inbound: -1044 bytes (heap=31188 pin=2260 bma=132 phl=6 lt=0 revr=0)
-21-05:37:09.942 [VRB] [HEAP-TEL] jobs: 368 bytes (heap=32360)
-21-05:37:11.325 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=130 phl=6)
-21-05:37:11.330 [VRB] [HEAP-TEL] inbound: -1016 bytes (heap=30992 pin=2262 bma=130 phl=8 lt=0 revr=0)
-21-05:37:11.334 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=132 phl=8)
-21-05:37:11.339 [VRB] [HEAP-TEL] inbound: -1028 bytes (heap=30416 pin=2263 bma=132 phl=10 lt=0 revr=0)
-21-05:37:11.449 [VRB] [HEAP-TEL] jobs: 380 bytes (heap=31616)
-21-05:37:11.969 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=130 phl=10)
-21-05:37:11.974 [VRB] [HEAP-TEL] inbound: -1020 bytes (heap=30244 pin=2265 bma=130 phl=12 lt=0 revr=0)
-21-05:37:12.203 [VRB] [HEAP-TEL] jobs: 184 bytes (heap=31236)
-21-05:37:12.243 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=130 phl=12)
-21-05:37:12.248 [VRB] [HEAP-TEL] inbound: -828 bytes (heap=29848 pin=2266 bma=130 phl=14 lt=0 revr=0)
-21-05:37:12.252 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=132 phl=14)
-21-05:37:12.257 [VRB] [HEAP-TEL] inbound: -1200 bytes (heap=29104 pin=2267 bma=132 phl=16 lt=0 revr=0)
-21-05:37:12.454 [VRB] [HEAP-TEL] jobs: 424 bytes (heap=30336)
-21-05:37:12.875 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=130 phl=16)
-21-05:37:12.880 [VRB] [HEAP-TEL] inbound: -1032 bytes (heap=28952 pin=2268 bma=130 phl=18 lt=0 revr=0)
-21-05:37:12.908 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=132 phl=18)
-21-05:37:12.914 [VRB] [HEAP-TEL] inbound: -1032 bytes (heap=28376 pin=2269 bma=132 phl=20 lt=0 revr=0)
-21-05:37:12.957 [VRB] [HEAP-TEL] jobs: 380 bytes (heap=29564)
-21-05:37:13.062 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=130 phl=20)
-21-05:37:13.068 [VRB] [HEAP-TEL] inbound: -1020 bytes (heap=27984 pin=2270 bma=130 phl=22 lt=0 revr=0)
-21-05:37:13.072 [VRB] [HEAP-TEL] boundary: -776 bytes (bma=132 phl=22)
-21-05:37:13.077 [VRB] [HEAP-TEL] inbound: -1052 bytes (heap=27384 pin=2271 bma=132 phl=24 lt=0 revr=0)
-21-05:37:13.163 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=134 phl=24)
-21-05:37:13.168 [VRB] [HEAP-TEL] inbound: -1032 bytes (heap=27220 pin=2272 bma=134 phl=26 lt=0 revr=0)
-21-05:37:13.208 [VRB] [HEAP-TEL] jobs: 556 bytes (heap=28376)
-21-05:37:13.218 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=130 phl=26)
-21-05:37:13.223 [VRB] [HEAP-TEL] inbound: -1036 bytes (heap=27196 pin=2273 bma=130 phl=28 lt=0 revr=0)
-21-05:37:13.375 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=132 phl=28)
-21-05:37:13.380 [VRB] [HEAP-TEL] inbound: -1024 bytes (heap=26416 pin=2274 bma=132 phl=30 lt=0 revr=0)
-21-05:37:13.384 [VRB] [HEAP-TEL] boundary: -776 bytes (bma=134 phl=30)
-21-05:37:13.389 [VRB] [HEAP-TEL] inbound: -1040 bytes (heap=25828 pin=2275 bma=134 phl=32 lt=0 revr=0)
-21-05:37:13.419 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=136 phl=32)
-21-05:37:13.424 [VRB] [HEAP-TEL] inbound: -1032 bytes (heap=25456 pin=2276 bma=136 phl=34 lt=0 revr=0)
-21-05:37:13.460 [VRB] [HEAP-TEL] jobs: 776 bytes (heap=26844)
-21-05:37:13.493 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=130 phl=34)
-21-05:37:13.498 [VRB] [HEAP-TEL] inbound: -1024 bytes (heap=25428 pin=2277 bma=130 phl=36 lt=0 revr=0)
-21-05:37:13.678 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=132 phl=36)
-21-05:37:13.683 [VRB] [HEAP-TEL] inbound: -1040 bytes (heap=25088 pin=2278 bma=132 phl=38 lt=0 revr=0)
-21-05:37:13.711 [VRB] [HEAP-TEL] jobs: 404 bytes (heap=26092)
-21-05:37:13.984 [VRB] [HEAP-TEL] boundary: -772 bytes (bma=130 phl=38)
-21-05:37:13.989 [VRB] [HEAP-TEL] inbound: -1036 bytes (heap=24640 pin=2279 bma=130 phl=40 lt=0 revr=0)
-21-05:37:15.111 [VRB] [HEAP-TEL] boundary: -540 bytes (bma=132 phl=40)
-21-05:37:15.116 [VRB] [HEAP-TEL] inbound: -992 bytes (heap=23940 pin=2282 bma=132 phl=42 lt=0 revr=0)
-21-05:37:15.120 [VRB] [HEAP-TEL] boundary: -768 bytes (bma=134 phl=42)
-21-05:37:15.125 [VRB] [HEAP-TEL] inbound: -1040 bytes (heap=23356 pin=2283 bma=134 phl=44 lt=0 revr=0)
-21-05:37:15.218 [VRB] [HEAP-TEL] jobs: 576 bytes (heap=24756)
-21-05:37:15.319 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=130 phl=44)
-21-05:37:15.324 [VRB] [HEAP-TEL] inbound: -1188 bytes (heap=23216 pin=2284 bma=130 phl=46 lt=0 revr=0)
-21-05:37:15.328 [VRB] [HEAP-TEL] boundary: -788 bytes (bma=132 phl=46)
-21-05:37:15.334 [VRB] [HEAP-TEL] inbound: -1208 bytes (heap=22460 pin=2285 bma=132 phl=48 lt=0 revr=0)
-21-05:37:15.338 [VRB] [HEAP-TEL] boundary: -772 bytes (bma=134 phl=48)
-21-05:37:15.343 [VRB] [HEAP-TEL] inbound: -1188 bytes (heap=21764 pin=2286 bma=134 phl=50 lt=0 revr=0)
-[WATCHDOG] HEAP SEVERE: 22568 < 24000 — trimming path-table caps
-[WATCHDOG] Heap after trim: 32176 (path caps 8/4)
-21-05:37:15.450 [VRB] [HEAP-TEL] boundary: -744 bytes (bma=136 phl=0)
-21-05:37:15.455 [VRB] [HEAP-TEL] inbound: -1012 bytes (heap=31060 pin=2287 bma=136 phl=2 lt=0 revr=0)
-21-05:37:15.485 [VRB] [HEAP-TEL] boundary: -748 bytes (bma=138 phl=2)
-21-05:37:15.491 [VRB] [HEAP-TEL] inbound: -1188 bytes (heap=30116 pin=2288 bma=138 phl=4 lt=0 revr=0)
-21-05:37:15.493 [VRB] [HEAP-TEL] jobs: 936 bytes (heap=31856)
-21-05:37:15.627 [VRB] [HEAP-TEL] boundary: -744 bytes (bma=130 phl=4)
-21-05:37:15.632 [VRB] [HEAP-TEL] inbound: -1012 bytes (heap=30284 pin=2289 bma=130 phl=6 lt=0 revr=0)
-21-05:37:15.636 [VRB] [HEAP-TEL] boundary: -748 bytes (bma=132 phl=6)
-21-05:37:15.641 [VRB] [HEAP-TEL] inbound: -1180 bytes (heap=29556 pin=2290 bma=132 phl=8 lt=0 revr=0)
-21-05:37:15.695 [VRB] [HEAP-TEL] boundary: -780 bytes (bma=134 phl=8)
-21-05:37:15.699 [VRB] [HEAP-TEL] inbound: -1216 bytes (heap=29000 pin=2291 bma=134 phl=10 lt=0 revr=0)
-21-05:37:15.745 [VRB] [HEAP-TEL] jobs: 568 bytes (heap=30376)
-21-05:37:15.840 [VRB] [HEAP-TEL] boundary: -772 bytes (bma=130 phl=10)
-21-05:37:15.845 [VRB] [HEAP-TEL] inbound: -1196 bytes (heap=28828 pin=2292 bma=130 phl=12 lt=0 revr=0)
-21-05:37:15.849 [VRB] [HEAP-TEL] boundary: -744 bytes (bma=132 phl=12)
-21-05:37:15.854 [VRB] [HEAP-TEL] inbound: -1180 bytes (heap=28100 pin=2293 bma=132 phl=14 lt=0 revr=0)
-21-05:37:15.934 [VRB] [HEAP-TEL] boundary: -516 bytes (bma=134 phl=14)
-21-05:37:15.939 [VRB] [HEAP-TEL] inbound: -968 bytes (heap=27376 pin=2294 bma=134 phl=16 lt=0 revr=0)
-21-05:37:16.006 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=136 phl=16)
-21-05:37:16.011 [VRB] [HEAP-TEL] inbound: -1040 bytes (heap=26788 pin=2295 bma=136 phl=18 lt=0 revr=0)
-21-05:37:16.013 [VRB] [HEAP-TEL] jobs: 736 bytes (heap=28328)
-21-05:37:16.195 [VRB] [HEAP-TEL] boundary: -744 bytes (bma=130 phl=18)
-21-05:37:16.200 [VRB] [HEAP-TEL] inbound: -808 bytes (heap=26968 pin=2296 bma=130 phl=20 lt=0 revr=0)
-21-05:37:16.204 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=132 phl=20)
-21-05:37:16.209 [VRB] [HEAP-TEL] inbound: -1188 bytes (heap=26232 pin=2297 bma=132 phl=22 lt=0 revr=0)
-21-05:37:16.245 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=134 phl=22)
-21-05:37:16.250 [VRB] [HEAP-TEL] inbound: -1024 bytes (heap=25868 pin=2298 bma=134 phl=24 lt=0 revr=0)
-21-05:37:16.265 [VRB] [HEAP-TEL] jobs: 576 bytes (heap=27044)
-21-05:37:16.443 [VRB] [HEAP-TEL] boundary: -544 bytes (bma=130 phl=24)
-21-05:37:16.449 [VRB] [HEAP-TEL] inbound: -964 bytes (heap=25520 pin=2299 bma=130 phl=26 lt=0 revr=0)
-21-05:37:16.453 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=132 phl=26)
-21-05:37:16.458 [VRB] [HEAP-TEL] inbound: -1196 bytes (heap=24776 pin=2300 bma=132 phl=28 lt=0 revr=0)
-21-05:37:16.517 [VRB] [HEAP-TEL] jobs: 368 bytes (heap=25952)
-21-05:37:16.854 [VRB] [HEAP-TEL] boundary: -744 bytes (bma=130 phl=28)
-21-05:37:16.859 [VRB] [HEAP-TEL] inbound: -1164 bytes (heap=24436 pin=2301 bma=130 phl=30 lt=0 revr=0)
-21-05:37:17.019 [VRB] [HEAP-TEL] jobs: 184 bytes (heap=25424)
-21-05:37:17.364 [VRB] [HEAP-TEL] boundary: -748 bytes (bma=130 phl=30)
-21-05:37:17.370 [VRB] [HEAP-TEL] inbound: -1168 bytes (heap=23904 pin=2302 bma=130 phl=32 lt=0 revr=0)
-21-05:37:17.384 [VRB] [HEAP-TEL] boundary: -744 bytes (bma=132 phl=32)
-21-05:37:17.389 [VRB] [HEAP-TEL] inbound: -1008 bytes (heap=23348 pin=2303 bma=132 phl=34 lt=0 revr=0)
-21-05:37:17.521 [VRB] [HEAP-TEL] jobs: 372 bytes (heap=24524)
-21-05:37:17.569 [VRB] [HEAP-TEL] boundary: -540 bytes (bma=130 phl=34)
-21-05:37:17.574 [VRB] [HEAP-TEL] inbound: -808 bytes (heap=23364 pin=2304 bma=130 phl=36 lt=0 revr=0)
-21-05:37:17.578 [VRB] [HEAP-TEL] boundary: -772 bytes (bma=132 phl=36)
-21-05:37:17.583 [VRB] [HEAP-TEL] inbound: -1048 bytes (heap=22772 pin=2305 bma=132 phl=38 lt=0 revr=0)
-21-05:37:17.678 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=134 phl=38)
-21-05:37:17.683 [VRB] [HEAP-TEL] inbound: -1020 bytes (heap=22004 pin=2306 bma=134 phl=40 lt=0 revr=0)
-21-05:37:17.772 [VRB] [HEAP-TEL] jobs: 584 bytes (heap=23404)
-21-05:37:18.079 [VRB] [HEAP-TEL] boundary: -772 bytes (bma=130 phl=40)
-21-05:37:18.084 [VRB] [HEAP-TEL] inbound: -1060 bytes (heap=22200 pin=2307 bma=130 phl=42 lt=0 revr=0)
-21-05:37:18.198 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=132 phl=42)
-21-05:37:18.203 [VRB] [HEAP-TEL] inbound: -1024 bytes (heap=21408 pin=2308 bma=132 phl=44 lt=0 revr=0)
-21-05:37:18.243 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=134 phl=44)
-21-05:37:18.248 [VRB] [HEAP-TEL] inbound: -1024 bytes (heap=21056 pin=2309 bma=134 phl=46 lt=0 revr=0)
-21-05:37:18.275 [VRB] [HEAP-TEL] jobs: 572 bytes (heap=22236)
-21-05:37:20.229 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=130 phl=46)
-21-05:37:20.235 [VRB] [HEAP-TEL] inbound: -1184 bytes (heap=20700 pin=2310 bma=130 phl=48 lt=0 revr=0)
-21-05:37:20.284 [VRB] [HEAP-TEL] jobs: 184 bytes (heap=21688)
-21-05:37:20.435 [VRB] [HEAP-TEL] boundary: -776 bytes (bma=130 phl=48)
-21-05:37:20.440 [VRB] [HEAP-TEL] inbound: -1200 bytes (heap=19928 pin=2311 bma=130 phl=50 lt=0 revr=0)
-21-05:37:20.535 [VRB] [HEAP-TEL] jobs: 184 bytes (heap=21124)
-21-05:37:20.850 [VRB] [HEAP-TEL] boundary: -768 bytes (bma=130 phl=50)
-21-05:37:20.855 [VRB] [HEAP-TEL] inbound: -1184 bytes (heap=19576 pin=2312 bma=130 phl=52 lt=0 revr=0)
-21-05:37:20.875 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=132 phl=52)
-21-05:37:20.880 [VRB] [HEAP-TEL] inbound: -1172 bytes (heap=18864 pin=2314 bma=132 phl=54 lt=0 revr=0)
-[WATCHDOG] Heap recovered to 30016 after emergency relief
-21-05:37:21.038 [VRB] [HEAP-TEL] jobs: 372 bytes (heap=30388)
-21-05:37:21.154 [VRB] [HEAP-TEL] boundary: -744 bytes (bma=130 phl=0)
-21-05:37:21.159 [VRB] [HEAP-TEL] inbound: -1012 bytes (heap=29232 pin=2315 bma=130 phl=2 lt=0 revr=0)
-21-05:37:21.766 [VRB] [HEAP-TEL] boundary: -744 bytes (bma=132 phl=2)
-21-05:37:21.771 [VRB] [HEAP-TEL] inbound: -1012 bytes (heap=28464 pin=2319 bma=132 phl=4 lt=0 revr=0)
-21-05:37:21.791 [VRB] [HEAP-TEL] jobs: 392 bytes (heap=29660)
-[TcpIF] Connecting to rns.beleth.net:4242 (cached IP)...
-[TcpIF] Cached IP failed, retrying with DNS
-[TcpIF] Connecting to rns.beleth.net:4242 (DNS)...
-[TcpIF] Resolved rns.beleth.net -> 129.213.74.184
-[TcpIF] Failed to connect to rns.beleth.net:4242 (attempt 8, next retry in 120s)
-21-05:37:34.241 [VRB] [HEAP-TEL] boundary: -744 bytes (bma=130 phl=4)
-21-05:37:34.246 [VRB] [HEAP-TEL] inbound: -1012 bytes (heap=28248 pin=2321 bma=130 phl=6 lt=0 revr=0)
-21-05:37:34.250 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=132 phl=6)
-21-05:37:34.255 [VRB] [HEAP-TEL] inbound: -1180 bytes (heap=27520 pin=2322 bma=132 phl=8 lt=0 revr=0)
-21-05:37:34.259 [VRB] [HEAP-TEL] boundary: -788 bytes (bma=134 phl=8)
-21-05:37:34.264 [VRB] [HEAP-TEL] inbound: -1052 bytes (heap=26920 pin=2323 bma=134 phl=10 lt=0 revr=0)
-21-05:37:34.268 [VRB] [HEAP-TEL] boundary: -768 bytes (bma=136 phl=10)
-21-05:37:34.273 [VRB] [HEAP-TEL] inbound: -1036 bytes (heap=26340 pin=2324 bma=136 phl=12 lt=0 revr=0)
-21-05:37:34.277 [VRB] [HEAP-TEL] boundary: -768 bytes (bma=138 phl=12)
-21-05:37:34.282 [VRB] [HEAP-TEL] inbound: -1040 bytes (heap=25760 pin=2325 bma=138 phl=14 lt=0 revr=0)
-21-05:37:34.286 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=140 phl=14)
-21-05:37:34.291 [VRB] [HEAP-TEL] inbound: -1032 bytes (heap=25192 pin=2326 bma=140 phl=16 lt=0 revr=0)
-21-05:37:34.384 [VRB] mem: 27128 (10%) [-6316] flash: 3477504 (98%) [0] paths: 3 dsts: 5 revr: 0 annc: 0 held: 0
-21-05:37:34.385 [VRB] preqs: 983 dpreqs: 0 ppreqs: 0 dprt: 8 cdsts: 2 chshs: 2
-21-05:37:34.386 [VRB] phl: 16 rcp: 0 lt: 0 pl: 0 al: 0 tun: 0
-21-05:37:34.387 [VRB] bla: 0 bma: 128
-21-05:37:34.388 [VRB] pin: 2326 pout: 2032 padd: 0 dpr: 2 ikd: 0 ia: 0
-
-21-05:37:34.389 [VRB] [HEAP-TEL] jobs: 1132 bytes (heap=27128)
-21-05:37:40.711 [VRB] [HEAP-TEL] boundary: -744 bytes (bma=130 phl=16)
-21-05:37:40.716 [VRB] [HEAP-TEL] inbound: -1016 bytes (heap=25808 pin=2328 bma=130 phl=18 lt=0 revr=0)
-21-05:37:40.720 [VRB] [HEAP-TEL] boundary: -772 bytes (bma=132 phl=18)
-21-05:37:40.725 [VRB] [HEAP-TEL] inbound: -1048 bytes (heap=25212 pin=2329 bma=132 phl=20 lt=0 revr=0)
-21-05:37:40.941 [VRB] [HEAP-TEL] jobs: 368 bytes (heap=26384)
-21-05:37:41.127 [VRB] [HEAP-TEL] boundary: -744 bytes (bma=130 phl=20)
-21-05:37:41.133 [VRB] [HEAP-TEL] inbound: -948 bytes (heap=24828 pin=2330 bma=130 phl=22 lt=0 revr=0)
-21-05:37:41.137 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=132 phl=22)
-21-05:37:41.142 [VRB] [HEAP-TEL] inbound: -1032 bytes (heap=24248 pin=2331 bma=132 phl=24 lt=0 revr=0)
-21-05:37:41.146 [VRB] [HEAP-TEL] boundary: -772 bytes (bma=134 phl=24)
-21-05:37:41.151 [VRB] [HEAP-TEL] inbound: -1192 bytes (heap=23524 pin=2332 bma=134 phl=26 lt=0 revr=0)
-21-05:37:41.155 [VRB] [HEAP-TEL] boundary: -744 bytes (bma=136 phl=26)
-21-05:37:41.160 [VRB] [HEAP-TEL] inbound: -1168 bytes (heap=22808 pin=2333 bma=136 phl=28 lt=0 revr=0)
-21-05:37:41.164 [VRB] [HEAP-TEL] boundary: -748 bytes (bma=138 phl=28)
-21-05:37:41.169 [VRB] [HEAP-TEL] inbound: -1180 bytes (heap=22080 pin=2334 bma=138 phl=30 lt=0 revr=0)
-21-05:37:41.173 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=140 phl=30)
-21-05:37:41.178 [VRB] [HEAP-TEL] inbound: -1188 bytes (heap=21344 pin=2335 bma=140 phl=32 lt=0 revr=0)
-21-05:37:41.182 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=142 phl=32)
-21-05:37:41.187 [VRB] [HEAP-TEL] inbound: -1028 bytes (heap=20776 pin=2336 bma=142 phl=34 lt=0 revr=0)
-21-05:37:41.191 [VRB] [HEAP-TEL] boundary: -772 bytes (bma=144 phl=34)
-21-05:37:41.196 [VRB] [HEAP-TEL] inbound: -1196 bytes (heap=20040 pin=2337 bma=144 phl=36 lt=0 revr=0)
-21-05:37:41.200 [VRB] [HEAP-TEL] boundary: -776 bytes (bma=146 phl=36)
-21-05:37:41.205 [VRB] [HEAP-TEL] inbound: -1048 bytes (heap=19448 pin=2338 bma=146 phl=38 lt=0 revr=0)
-21-05:37:41.210 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=148 phl=38)
-21-05:37:41.215 [VRB] [HEAP-TEL] inbound: -1200 bytes (heap=18708 pin=2339 bma=148 phl=40 lt=0 revr=0)
-21-05:37:41.219 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=150 phl=40)
-21-05:37:41.224 [VRB] [HEAP-TEL] inbound: -1168 bytes (heap=17996 pin=2340 bma=150 phl=42 lt=0 revr=0)
-21-05:37:41.233 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=152 phl=42)
-21-05:37:41.238 [VRB] [HEAP-TEL] inbound: -1184 bytes (heap=17268 pin=2342 bma=152 phl=44 lt=0 revr=0)
-21-05:37:41.242 [VRB] [HEAP-TEL] boundary: -748 bytes (bma=154 phl=44)
-21-05:37:41.247 [VRB] [HEAP-TEL] inbound: -1164 bytes (heap=16560 pin=2343 bma=154 phl=46 lt=0 revr=0)
-21-05:37:41.252 [VRB] [HEAP-TEL] boundary: -748 bytes (bma=156 phl=46)
-21-05:37:41.258 [VRB] [HEAP-TEL] inbound: -1012 bytes (heap=16000 pin=2344 bma=156 phl=48 lt=0 revr=0)
-21-05:37:41.262 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=158 phl=48)
-21-05:37:41.268 [VRB] [HEAP-TEL] inbound: -1172 bytes (heap=15284 pin=2345 bma=158 phl=50 lt=0 revr=0)
-21-05:37:41.272 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=160 phl=50)
-21-05:37:41.278 [VRB] [HEAP-TEL] inbound: -1020 bytes (heap=14720 pin=2346 bma=160 phl=52 lt=0 revr=0)
-21-05:37:41.282 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=162 phl=52)
-21-05:37:41.288 [VRB] [HEAP-TEL] inbound: -1176 bytes (heap=14000 pin=2347 bma=162 phl=54 lt=0 revr=0)
-21-05:37:41.292 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=164 phl=54)
-21-05:37:41.299 [VRB] [HEAP-TEL] inbound: -1180 bytes (heap=13320 pin=2348 bma=164 phl=56 lt=0 revr=0)
-21-05:37:41.303 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=166 phl=56)
-21-05:37:41.309 [VRB] [HEAP-TEL] inbound: -1020 bytes (heap=12752 pin=2349 bma=166 phl=58 lt=0 revr=0)
-21-05:37:41.313 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=168 phl=58)
-21-05:37:41.319 [VRB] [HEAP-TEL] inbound: -1188 bytes (heap=12024 pin=2350 bma=168 phl=60 lt=0 revr=0)
-21-05:37:41.323 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=170 phl=60)
-21-05:37:41.329 [VRB] [HEAP-TEL] inbound: -1016 bytes (heap=11468 pin=2351 bma=170 phl=62 lt=0 revr=0)
-21-05:37:41.333 [VRB] [HEAP-TEL] boundary: -748 bytes (bma=172 phl=62)
-21-05:37:41.339 [VRB] [HEAP-TEL] inbound: -1180 bytes (heap=10740 pin=2352 bma=172 phl=64 lt=0 revr=0)
-21-05:37:41.343 [VRB] [HEAP-TEL] boundary: -744 bytes (bma=174 phl=64)
-21-05:37:41.349 [VRB] [HEAP-TEL] inbound: -900 bytes (heap=10292 pin=2353 bma=174 phl=66 lt=0 revr=0)
-21-05:37:41.353 [VRB] [HEAP-TEL] boundary: -748 bytes (bma=176 phl=66)
-21-05:37:41.359 [VRB] [HEAP-TEL] inbound: -904 bytes (heap=9840 pin=2354 bma=176 phl=68 lt=0 revr=0)
-21-05:37:41.363 [VRB] [HEAP-TEL] boundary: -776 bytes (bma=178 phl=68)
-21-05:37:41.369 [VRB] [HEAP-TEL] inbound: -932 bytes (heap=9360 pin=2355 bma=178 phl=70 lt=0 revr=0)
-21-05:37:41.373 [VRB] [HEAP-TEL] boundary: -700 bytes (bma=180 phl=70)
-21-05:37:41.379 [VRB] [HEAP-TEL] inbound: -700 bytes (heap=9124 pin=2356 bma=180 phl=72 lt=0 revr=0)
-21-05:37:41.383 [VRB] [HEAP-TEL] boundary: -620 bytes (bma=182 phl=72)
-21-05:37:41.389 [VRB] [HEAP-TEL] inbound: -680 bytes (heap=8896 pin=2357 bma=182 phl=74 lt=0 revr=0)
-21-05:37:41.393 [VRB] [HEAP-TEL] boundary: -452 bytes (bma=184 phl=74)
-21-05:37:41.399 [VRB] [HEAP-TEL] inbound: -452 bytes (heap=8896 pin=2358 bma=184 phl=76 lt=0 revr=0)
-21-05:37:41.403 [VRB] [HEAP-TEL] boundary: -360 bytes (bma=186 phl=76)
-21-05:37:41.411 [VRB] [HEAP-TEL] inbound: -360 bytes (heap=8896 pin=2359 bma=186 phl=78 lt=0 revr=0)
-21-05:37:41.415 [VRB] [HEAP-TEL] boundary: -328 bytes (bma=188 phl=78)
-21-05:37:41.421 [VRB] [HEAP-TEL] inbound: -328 bytes (heap=8896 pin=2360 bma=188 phl=80 lt=0 revr=0)
-21-05:37:41.425 [VRB] [HEAP-TEL] boundary: -328 bytes (bma=190 phl=80)
-21-05:37:41.431 [VRB] [HEAP-TEL] inbound: -328 bytes (heap=8896 pin=2361 bma=190 phl=82 lt=0 revr=0)
-21-05:37:41.439 [VRB] [HEAP-TEL] boundary: -328 bytes (bma=192 phl=82)
-21-05:37:41.446 [VRB] [HEAP-TEL] inbound: -328 bytes (heap=8896 pin=2363 bma=192 phl=84 lt=0 revr=0)
-21-05:37:41.449 [VRB] [HEAP-TEL] jobs: 7144 bytes (heap=16720)
-[WATCHDOG] Heap recovered to 28652 after emergency relief
-21-05:37:41.569 [VRB] [HEAP-TEL] boundary: -744 bytes (bma=130 phl=0)
-21-05:37:41.574 [VRB] [HEAP-TEL] inbound: -1156 bytes (heap=27432 pin=2364 bma=130 phl=2 lt=0 revr=0)
-21-05:37:41.578 [VRB] [HEAP-TEL] boundary: -744 bytes (bma=132 phl=2)
-21-05:37:41.583 [VRB] [HEAP-TEL] inbound: -1156 bytes (heap=26728 pin=2365 bma=132 phl=4 lt=0 revr=0)
-21-05:37:41.587 [VRB] [HEAP-TEL] boundary: -744 bytes (bma=134 phl=4)
-21-05:37:41.592 [VRB] [HEAP-TEL] inbound: -1160 bytes (heap=26020 pin=2366 bma=134 phl=6 lt=0 revr=0)
-21-05:37:41.596 [VRB] [HEAP-TEL] boundary: -744 bytes (bma=136 phl=6)
-21-05:37:41.601 [VRB] [HEAP-TEL] inbound: -1164 bytes (heap=25308 pin=2367 bma=136 phl=8 lt=0 revr=0)
-21-05:37:41.605 [VRB] [HEAP-TEL] boundary: -744 bytes (bma=138 phl=8)
-21-05:37:41.610 [VRB] [HEAP-TEL] inbound: -1012 bytes (heap=24748 pin=2368 bma=138 phl=10 lt=0 revr=0)
-21-05:37:41.614 [VRB] [HEAP-TEL] boundary: -748 bytes (bma=140 phl=10)
-21-05:37:41.619 [VRB] [HEAP-TEL] inbound: -1160 bytes (heap=24040 pin=2369 bma=140 phl=12 lt=0 revr=0)
-21-05:37:41.623 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=142 phl=12)
-21-05:37:41.629 [VRB] [HEAP-TEL] inbound: -1268 bytes (heap=23224 pin=2370 bma=142 phl=14 lt=0 revr=0)
-21-05:37:41.633 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=144 phl=14)
-21-05:37:41.638 [VRB] [HEAP-TEL] inbound: -1024 bytes (heap=22864 pin=2371 bma=144 phl=16 lt=0 revr=0)
-21-05:37:41.642 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=146 phl=16)
-21-05:37:41.647 [VRB] [HEAP-TEL] inbound: -1040 bytes (heap=22280 pin=2372 bma=146 phl=18 lt=0 revr=0)
-21-05:37:41.651 [VRB] [HEAP-TEL] boundary: -788 bytes (bma=148 phl=18)
-21-05:37:41.656 [VRB] [HEAP-TEL] inbound: -1052 bytes (heap=21684 pin=2373 bma=148 phl=20 lt=0 revr=0)
-21-05:37:41.660 [VRB] [HEAP-TEL] boundary: -776 bytes (bma=150 phl=20)
-21-05:37:41.665 [VRB] [HEAP-TEL] inbound: -1044 bytes (heap=21096 pin=2374 bma=150 phl=22 lt=0 revr=0)
-21-05:37:41.669 [VRB] [HEAP-TEL] boundary: -780 bytes (bma=152 phl=22)
-21-05:37:41.674 [VRB] [HEAP-TEL] inbound: -1052 bytes (heap=20512 pin=2375 bma=152 phl=24 lt=0 revr=0)
-21-05:37:41.682 [VRB] [HEAP-TEL] boundary: -768 bytes (bma=154 phl=24)
-21-05:37:41.687 [VRB] [HEAP-TEL] inbound: -1052 bytes (heap=19924 pin=2377 bma=154 phl=26 lt=0 revr=0)
-21-05:37:41.691 [VRB] [HEAP-TEL] boundary: -748 bytes (bma=156 phl=26)
-21-05:37:41.696 [VRB] [HEAP-TEL] inbound: -1180 bytes (heap=19196 pin=2378 bma=156 phl=28 lt=0 revr=0)
-21-05:37:41.700 [VRB] [HEAP-TEL] boundary: -748 bytes (bma=158 phl=28)
-21-05:37:41.705 [VRB] [HEAP-TEL] inbound: -1164 bytes (heap=18484 pin=2379 bma=158 phl=30 lt=0 revr=0)
-21-05:37:41.733 [VRB] [HEAP-TEL] jobs: 2824 bytes (heap=21904)
-21-05:37:42.043 [VRB] [HEAP-TEL] boundary: -744 bytes (bma=130 phl=30)
-21-05:37:42.048 [VRB] [HEAP-TEL] inbound: -1160 bytes (heap=20400 pin=2380 bma=130 phl=32 lt=0 revr=0)
-21-05:37:42.145 [VRB] [HEAP-TEL] boundary: -744 bytes (bma=132 phl=32)
-21-05:37:42.150 [VRB] [HEAP-TEL] inbound: -1168 bytes (heap=19684 pin=2381 bma=132 phl=34 lt=0 revr=0)
-21-05:37:42.244 [VRB] [HEAP-TEL] jobs: 436 bytes (heap=20852)
-21-05:37:42.247 [VRB] [HEAP-TEL] boundary: -748 bytes (bma=130 phl=34)
-21-05:37:42.252 [VRB] [HEAP-TEL] inbound: -1180 bytes (heap=19568 pin=2382 bma=130 phl=36 lt=0 revr=0)
-21-05:37:42.455 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=132 phl=36)
-21-05:37:42.460 [VRB] [HEAP-TEL] inbound: -984 bytes (heap=18620 pin=2383 bma=132 phl=38 lt=0 revr=0)
-[WATCHDOG] Heap recovered to 26692 after emergency relief
-21-05:37:42.599 [VRB] [HEAP-TEL] jobs: 376 bytes (heap=27068)
-21-05:37:42.659 [VRB] [HEAP-TEL] boundary: -744 bytes (bma=130 phl=0)
-21-05:37:42.664 [VRB] [HEAP-TEL] inbound: -1008 bytes (heap=25916 pin=2384 bma=130 phl=2 lt=0 revr=0)
-21-05:37:42.668 [VRB] [HEAP-TEL] boundary: -744 bytes (bma=132 phl=2)
-21-05:37:42.673 [VRB] [HEAP-TEL] inbound: -1012 bytes (heap=25356 pin=2385 bma=132 phl=4 lt=0 revr=0)
-21-05:37:42.769 [VRB] [HEAP-TEL] boundary: -744 bytes (bma=134 phl=4)
-21-05:37:42.774 [VRB] [HEAP-TEL] inbound: -1016 bytes (heap=24584 pin=2386 bma=134 phl=6 lt=0 revr=0)
-21-05:37:42.850 [VRB] [HEAP-TEL] jobs: 580 bytes (heap=25968)
-21-05:37:42.971 [VRB] [HEAP-TEL] boundary: -536 bytes (bma=130 phl=6)
-21-05:37:42.976 [VRB] [HEAP-TEL] inbound: -820 bytes (heap=24796 pin=2387 bma=130 phl=8 lt=0 revr=0)
-21-05:37:43.102 [VRB] [HEAP-TEL] jobs: 184 bytes (heap=25576)
-21-05:37:43.577 [VRB] [HEAP-TEL] boundary: -744 bytes (bma=130 phl=8)
-21-05:37:43.582 [VRB] [HEAP-TEL] inbound: -1172 bytes (heap=24260 pin=2388 bma=130 phl=10 lt=0 revr=0)
-21-05:37:43.610 [VRB] [HEAP-TEL] jobs: 184 bytes (heap=25040)
-21-05:37:43.717 [VRB] [HEAP-TEL] boundary: -744 bytes (bma=130 phl=10)
-21-05:37:43.722 [VRB] [HEAP-TEL] inbound: -1012 bytes (heap=23676 pin=2389 bma=130 phl=12 lt=0 revr=0)
-21-05:37:43.749 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=132 phl=12)
-21-05:37:43.754 [VRB] [HEAP-TEL] inbound: -1188 bytes (heap=22940 pin=2390 bma=132 phl=14 lt=0 revr=0)
-21-05:37:43.861 [VRB] [HEAP-TEL] jobs: 372 bytes (heap=24116)
-21-05:37:43.889 [VRB] [HEAP-TEL] boundary: -540 bytes (bma=130 phl=14)
-21-05:37:43.894 [VRB] [HEAP-TEL] inbound: -976 bytes (heap=22788 pin=2391 bma=130 phl=16 lt=0 revr=0)
-21-05:37:43.898 [VRB] [HEAP-TEL] boundary: -772 bytes (bma=132 phl=16)
-21-05:37:43.903 [VRB] [HEAP-TEL] inbound: -1212 bytes (heap=22028 pin=2392 bma=132 phl=18 lt=0 revr=0)
-21-05:37:44.093 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=134 phl=18)
-21-05:37:44.098 [VRB] [HEAP-TEL] inbound: -1188 bytes (heap=21088 pin=2393 bma=134 phl=20 lt=0 revr=0)
-21-05:37:44.102 [VRB] [HEAP-TEL] boundary: -748 bytes (bma=136 phl=20)
-21-05:37:44.107 [VRB] [HEAP-TEL] inbound: -1172 bytes (heap=20368 pin=2394 bma=136 phl=22 lt=0 revr=0)
-21-05:37:44.138 [VRB] [HEAP-TEL] boundary: -748 bytes (bma=138 phl=22)
-21-05:37:44.143 [VRB] [HEAP-TEL] inbound: -1168 bytes (heap=19652 pin=2395 bma=138 phl=24 lt=0 revr=0)
-21-05:37:44.145 [VRB] [HEAP-TEL] jobs: 976 bytes (heap=21432)
-21-05:37:44.219 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=130 phl=24)
-21-05:37:44.224 [VRB] [HEAP-TEL] inbound: -1184 bytes (heap=19896 pin=2396 bma=130 phl=26 lt=0 revr=0)
-21-05:37:44.397 [VRB] [HEAP-TEL] jobs: 208 bytes (heap=20908)
-21-05:37:44.472 [VRB] [HEAP-TEL] boundary: -772 bytes (bma=130 phl=26)
-21-05:37:44.477 [VRB] [HEAP-TEL] inbound: -1200 bytes (heap=19356 pin=2397 bma=130 phl=28 lt=0 revr=0)
-21-05:37:44.649 [VRB] [HEAP-TEL] jobs: 184 bytes (heap=20344)
-21-05:37:44.716 [VRB] [HEAP-TEL] boundary: -536 bytes (bma=130 phl=28)
-21-05:37:44.721 [VRB] [HEAP-TEL] inbound: -952 bytes (heap=18788 pin=2398 bma=130 phl=30 lt=0 revr=0)
-21-05:37:44.725 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=132 phl=30)
-21-05:37:44.730 [VRB] [HEAP-TEL] inbound: -1048 bytes (heap=18232 pin=2399 bma=132 phl=32 lt=0 revr=0)
-[WATCHDOG] Heap recovered to 25208 after emergency relief
-21-05:37:44.901 [VRB] [HEAP-TEL] jobs: 392 bytes (heap=25600)
-21-05:37:45.325 [VRB] [HEAP-TEL] boundary: -744 bytes (bma=130 phl=0)
-21-05:37:45.330 [VRB] [HEAP-TEL] inbound: -1028 bytes (heap=24436 pin=2400 bma=130 phl=2 lt=0 revr=0)
-21-05:37:45.372 [VRB] [HEAP-TEL] boundary: -744 bytes (bma=132 phl=2)
-21-05:37:45.378 [VRB] [HEAP-TEL] inbound: -1156 bytes (heap=23524 pin=2401 bma=132 phl=4 lt=0 revr=0)
-21-05:37:45.403 [VRB] [HEAP-TEL] jobs: 368 bytes (heap=24696)
-21-05:37:46.959 [VRB] [HEAP-TEL] boundary: -540 bytes (bma=130 phl=4)
-21-05:37:46.965 [VRB] [HEAP-TEL] inbound: -824 bytes (heap=23312 pin=2405 bma=130 phl=6 lt=0 revr=0)
-21-05:37:47.161 [VRB] [HEAP-TEL] jobs: 184 bytes (heap=24300)
-21-05:37:47.470 [VRB] [HEAP-TEL] boundary: -572 bytes (bma=130 phl=6)
-21-05:37:47.475 [VRB] [HEAP-TEL] inbound: -836 bytes (heap=22904 pin=2406 bma=130 phl=8 lt=0 revr=0)
-21-05:37:47.574 [VRB] [HEAP-TEL] boundary: -768 bytes (bma=132 phl=8)
-21-05:37:47.579 [VRB] [HEAP-TEL] inbound: -1212 bytes (heap=22144 pin=2407 bma=132 phl=10 lt=0 revr=0)
-21-05:37:47.583 [VRB] [HEAP-TEL] boundary: -744 bytes (bma=134 phl=10)
-21-05:37:47.588 [VRB] [HEAP-TEL] inbound: -1012 bytes (heap=21584 pin=2408 bma=134 phl=12 lt=0 revr=0)
-21-05:37:47.664 [VRB] [HEAP-TEL] jobs: 600 bytes (heap=22848)
-21-05:37:47.677 [VRB] [HEAP-TEL] boundary: -772 bytes (bma=130 phl=12)
-21-05:37:47.682 [VRB] [HEAP-TEL] inbound: -1052 bytes (heap=21584 pin=2409 bma=130 phl=14 lt=0 revr=0)
-21-05:37:47.886 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=132 phl=14)
-21-05:37:47.891 [VRB] [HEAP-TEL] inbound: -1048 bytes (heap=21212 pin=2410 bma=132 phl=16 lt=0 revr=0)
-21-05:37:47.895 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=134 phl=16)
-21-05:37:47.900 [VRB] [HEAP-TEL] inbound: -1028 bytes (heap=20640 pin=2411 bma=134 phl=18 lt=0 revr=0)
-21-05:37:47.914 [VRB] [HEAP-TEL] boundary: -776 bytes (bma=136 phl=18)
-21-05:37:47.919 [VRB] [HEAP-TEL] inbound: -1044 bytes (heap=20052 pin=2412 bma=136 phl=20 lt=0 revr=0)
-21-05:37:47.922 [VRB] [HEAP-TEL] jobs: 756 bytes (heap=21408)
-21-05:37:48.214 [VRB] [HEAP-TEL] boundary: -944 bytes (bma=130 phl=20)
-21-05:37:48.219 [VRB] [HEAP-TEL] inbound: -1440 bytes (heap=19616 pin=2413 bma=130 phl=22 lt=0 revr=0)
-21-05:37:48.223 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=132 phl=22)
-21-05:37:48.228 [VRB] [HEAP-TEL] inbound: -1176 bytes (heap=18936 pin=2414 bma=132 phl=24 lt=0 revr=0)
-[WATCHDOG] Heap recovered to 24588 after emergency relief
-21-05:37:48.424 [VRB] [HEAP-TEL] jobs: 368 bytes (heap=24956)
-21-05:37:48.496 [VRB] [HEAP-TEL] boundary: -528 bytes (bma=130 phl=0)
-21-05:37:48.501 [VRB] [HEAP-TEL] inbound: -812 bytes (heap=23572 pin=2415 bma=130 phl=2 lt=0 revr=0)
-21-05:37:48.547 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=132 phl=2)
-21-05:37:48.552 [VRB] [HEAP-TEL] inbound: -1028 bytes (heap=22996 pin=2416 bma=132 phl=4 lt=0 revr=0)
-21-05:37:48.676 [VRB] [HEAP-TEL] jobs: 380 bytes (heap=24180)
-21-05:37:49.112 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=130 phl=4)
-21-05:37:49.117 [VRB] [HEAP-TEL] inbound: -1024 bytes (heap=22804 pin=2418 bma=130 phl=6 lt=0 revr=0)
-21-05:37:49.179 [VRB] [HEAP-TEL] jobs: 192 bytes (heap=23808)
-21-05:37:49.623 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=130 phl=6)
-21-05:37:49.628 [VRB] [HEAP-TEL] inbound: -1184 bytes (heap=22480 pin=2419 bma=130 phl=8 lt=0 revr=0)
-21-05:37:49.682 [VRB] [HEAP-TEL] jobs: 188 bytes (heap=23264)
-21-05:37:50.963 [VRB] [HEAP-TEL] boundary: -748 bytes (bma=130 phl=8)
-21-05:37:50.968 [VRB] [HEAP-TEL] inbound: -1028 bytes (heap=22092 pin=2420 bma=130 phl=10 lt=0 revr=0)
-21-05:37:51.234 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=132 phl=10)
-21-05:37:51.239 [VRB] [HEAP-TEL] inbound: -1028 bytes (heap=21308 pin=2424 bma=132 phl=12 lt=0 revr=0)
-21-05:37:51.440 [VRB] [HEAP-TEL] jobs: 380 bytes (heap=22492)
-21-05:37:51.978 [VRB] [HEAP-TEL] boundary: -864 bytes (bma=130 phl=12)
-21-05:37:51.984 [VRB] [HEAP-TEL] inbound: -1188 bytes (heap=21160 pin=2425 bma=130 phl=14 lt=0 revr=0)
-21-05:37:52.219 [VRB] [HEAP-TEL] jobs: 184 bytes (heap=21940)
-21-05:37:52.286 [VRB] [HEAP-TEL] boundary: -748 bytes (bma=130 phl=14)
-21-05:37:52.289 [VRB] [HEAP-TEL] inbound: -1176 bytes (heap=20620 pin=2426 bma=130 phl=16 lt=0 revr=0)
-21-05:37:52.470 [VRB] [HEAP-TEL] jobs: 184 bytes (heap=21400)
-21-05:37:52.694 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=130 phl=16)
-21-05:37:52.699 [VRB] [HEAP-TEL] inbound: -1024 bytes (heap=19984 pin=2427 bma=130 phl=18 lt=0 revr=0)
-21-05:37:52.731 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=132 phl=18)
-21-05:37:52.736 [VRB] [HEAP-TEL] inbound: -1024 bytes (heap=19412 pin=2428 bma=132 phl=20 lt=0 revr=0)
-21-05:37:52.738 [VRB] [HEAP-TEL] jobs: 388 bytes (heap=20644)
-21-05:37:52.899 [VRB] [HEAP-TEL] boundary: -784 bytes (bma=130 phl=20)
-21-05:37:52.904 [VRB] [HEAP-TEL] inbound: -1216 bytes (heap=19036 pin=2429 bma=130 phl=22 lt=0 revr=0)
-21-05:37:52.908 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=132 phl=22)
-21-05:37:52.913 [VRB] [HEAP-TEL] inbound: -1028 bytes (heap=18464 pin=2430 bma=132 phl=24 lt=0 revr=0)
-[WATCHDOG] Heap recovered to 23936 after emergency relief
-21-05:37:53.028 [VRB] [HEAP-TEL] jobs: 232 bytes (heap=24168)
-21-05:37:53.408 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=130 phl=0)
-21-05:37:53.414 [VRB] [HEAP-TEL] inbound: -1032 bytes (heap=22784 pin=2431 bma=130 phl=2 lt=0 revr=0)
-21-05:37:53.531 [VRB] [HEAP-TEL] jobs: 92 bytes (heap=23680)
-21-05:37:54.644 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=130 phl=2)
-21-05:37:54.649 [VRB] [HEAP-TEL] inbound: -1020 bytes (heap=22516 pin=2432 bma=130 phl=4 lt=0 revr=0)
-21-05:37:55.354 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=130 phl=4)
-21-05:37:55.359 [VRB] [HEAP-TEL] inbound: -1188 bytes (heap=21824 pin=2433 bma=130 phl=6 lt=0 revr=0)
-21-05:37:55.503 [VRB] [HEAP-TEL] boundary: -768 bytes (bma=132 phl=6)
-21-05:37:55.508 [VRB] [HEAP-TEL] inbound: -1188 bytes (heap=21108 pin=2434 bma=132 phl=8 lt=0 revr=0)
-21-05:37:58.241 [VRB] [HEAP-TEL] boundary: -780 bytes (bma=130 phl=8)
-21-05:37:58.246 [VRB] [HEAP-TEL] inbound: -1060 bytes (heap=20304 pin=2435 bma=130 phl=10 lt=0 revr=0)
-21-05:37:58.427 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=130 phl=10)
-21-05:37:58.432 [VRB] [HEAP-TEL] inbound: -1036 bytes (heap=19744 pin=2436 bma=130 phl=12 lt=0 revr=0)
-21-05:37:58.454 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=132 phl=12)
-21-05:37:58.459 [VRB] [HEAP-TEL] inbound: -1180 bytes (heap=19232 pin=2437 bma=132 phl=14 lt=0 revr=0)
-[WATCHDOG] Heap recovered to 22524 after emergency relief
-21-05:37:58.598 [VRB] [HEAP-TEL] jobs: 368 bytes (heap=22892)
-21-05:37:59.144 [VRB] [HEAP-TEL] boundary: -748 bytes (bma=130 phl=0)
-21-05:37:59.149 [VRB] [HEAP-TEL] inbound: -1016 bytes (heap=21524 pin=2438 bma=130 phl=2 lt=0 revr=0)
-21-05:37:59.156 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=132 phl=2)
-21-05:37:59.161 [VRB] [HEAP-TEL] inbound: -1188 bytes (heap=20788 pin=2439 bma=132 phl=4 lt=0 revr=0)
-21-05:37:59.352 [VRB] [HEAP-TEL] jobs: 368 bytes (heap=21960)
-21-05:37:59.452 [VRB] [HEAP-TEL] boundary: -748 bytes (bma=130 phl=4)
-21-05:37:59.457 [VRB] [HEAP-TEL] inbound: -1176 bytes (heap=20432 pin=2440 bma=130 phl=6 lt=0 revr=0)
-21-05:37:59.603 [VRB] [HEAP-TEL] jobs: 184 bytes (heap=21420)
-21-05:38:00.576 [VRB] [HEAP-TEL] boundary: -744 bytes (bma=130 phl=6)
-21-05:38:00.581 [VRB] [HEAP-TEL] inbound: -1160 bytes (heap=19908 pin=2441 bma=130 phl=8 lt=0 revr=0)
-21-05:38:00.609 [VRB] [HEAP-TEL] jobs: 188 bytes (heap=20900)
-21-05:38:00.778 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=130 phl=8)
-21-05:38:00.783 [VRB] [HEAP-TEL] inbound: -1036 bytes (heap=19512 pin=2442 bma=130 phl=10 lt=0 revr=0)
-21-05:38:00.861 [VRB] [HEAP-TEL] jobs: 188 bytes (heap=20504)
-21-05:38:01.908 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=130 phl=10)
-21-05:38:01.913 [VRB] [HEAP-TEL] inbound: -1028 bytes (heap=19124 pin=2444 bma=130 phl=12 lt=0 revr=0)
-[WATCHDOG] Heap recovered to 22192 after emergency relief
-21-05:38:02.030 [VRB] [HEAP-TEL] boundary: -748 bytes (bma=132 phl=0)
-21-05:38:02.035 [VRB] [HEAP-TEL] inbound: -1164 bytes (heap=20924 pin=2445 bma=132 phl=2 lt=0 revr=0)
-21-05:38:02.117 [VRB] [HEAP-TEL] jobs: 384 bytes (heap=21904)
-21-05:38:02.834 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=130 phl=2)
-21-05:38:02.839 [VRB] [HEAP-TEL] inbound: -1016 bytes (heap=20328 pin=2446 bma=130 phl=4 lt=0 revr=0)
-21-05:38:02.843 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=132 phl=4)
-21-05:38:02.848 [VRB] [HEAP-TEL] inbound: -828 bytes (heap=19952 pin=2447 bma=132 phl=6 lt=0 revr=0)
-21-05:38:02.856 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=134 phl=6)
-21-05:38:02.861 [VRB] [HEAP-TEL] inbound: -1048 bytes (heap=19360 pin=2448 bma=134 phl=8 lt=0 revr=0)
-21-05:38:02.871 [VRB] [HEAP-TEL] jobs: 608 bytes (heap=20780)
-21-05:38:03.038 [VRB] [HEAP-TEL] boundary: -784 bytes (bma=130 phl=8)
-21-05:38:03.043 [VRB] [HEAP-TEL] inbound: -1052 bytes (heap=19584 pin=2449 bma=130 phl=10 lt=0 revr=0)
-21-05:38:03.047 [VRB] [HEAP-TEL] boundary: -768 bytes (bma=132 phl=10)
-21-05:38:03.052 [VRB] [HEAP-TEL] inbound: -1044 bytes (heap=18996 pin=2450 bma=132 phl=12 lt=0 revr=0)
-21-05:38:03.082 [VRB] [HEAP-TEL] boundary: -776 bytes (bma=134 phl=12)
-21-05:38:03.087 [VRB] [HEAP-TEL] inbound: -1040 bytes (heap=18184 pin=2451 bma=134 phl=14 lt=0 revr=0)
-[WATCHDOG] Heap recovered to 21724 after emergency relief
-21-05:38:03.201 [VRB] [HEAP-TEL] jobs: 576 bytes (heap=22300)
-21-05:38:03.249 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=130 phl=0)
-21-05:38:03.255 [VRB] [HEAP-TEL] inbound: -1032 bytes (heap=20916 pin=2452 bma=130 phl=2 lt=0 revr=0)
-21-05:38:03.281 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=132 phl=2)
-21-05:38:03.286 [VRB] [HEAP-TEL] inbound: -1024 bytes (heap=20552 pin=2453 bma=132 phl=4 lt=0 revr=0)
-21-05:38:03.320 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=134 phl=4)
-21-05:38:03.325 [VRB] [HEAP-TEL] inbound: -1040 bytes (heap=19548 pin=2454 bma=134 phl=6 lt=0 revr=0)
-21-05:38:03.373 [VRB] [HEAP-TEL] boundary: -780 bytes (bma=136 phl=6)
-21-05:38:03.378 [VRB] [HEAP-TEL] inbound: -1056 bytes (heap=19168 pin=2455 bma=136 phl=8 lt=0 revr=0)
-[WATCHDOG] Heap recovered to 21516 after emergency relief
-21-05:38:03.521 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=138 phl=0)
-21-05:38:03.526 [VRB] [HEAP-TEL] inbound: -1036 bytes (heap=20128 pin=2456 bma=138 phl=2 lt=0 revr=0)
-21-05:38:03.528 [VRB] [HEAP-TEL] jobs: 928 bytes (heap=21876)
-21-05:38:03.557 [VRB] [HEAP-TEL] boundary: -744 bytes (bma=130 phl=2)
-21-05:38:03.562 [VRB] [HEAP-TEL] inbound: -804 bytes (heap=20512 pin=2457 bma=130 phl=4 lt=0 revr=0)
-21-05:38:03.780 [VRB] [HEAP-TEL] jobs: 184 bytes (heap=21500)
-21-05:38:06.619 [VRB] [HEAP-TEL] boundary: -744 bytes (bma=130 phl=4)
-21-05:38:06.624 [VRB] [HEAP-TEL] inbound: -1164 bytes (heap=20192 pin=2458 bma=130 phl=6 lt=0 revr=0)
-21-05:38:07.549 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=132 phl=6)
-21-05:38:07.554 [VRB] [HEAP-TEL] inbound: -1172 bytes (heap=19264 pin=2461 bma=132 phl=8 lt=0 revr=0)
-21-05:38:07.556 [VRB] [HEAP-TEL] jobs: 368 bytes (heap=20436)
-21-05:38:07.561 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=130 phl=8)
-21-05:38:07.566 [VRB] [HEAP-TEL] inbound: -1028 bytes (heap=19056 pin=2462 bma=130 phl=10 lt=0 revr=0)
-[WATCHDOG] Heap recovered to 21768 after emergency relief
-21-05:38:07.808 [VRB] [HEAP-TEL] jobs: 184 bytes (heap=21952)
-21-05:38:08.377 [VRB] [HEAP-TEL] boundary: -744 bytes (bma=130 phl=0)
-21-05:38:08.382 [VRB] [HEAP-TEL] inbound: -1012 bytes (heap=20588 pin=2463 bma=130 phl=2 lt=0 revr=0)
-21-05:38:08.386 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=132 phl=2)
-21-05:38:08.391 [VRB] [HEAP-TEL] inbound: -1036 bytes (heap=20004 pin=2464 bma=132 phl=4 lt=0 revr=0)
-21-05:38:08.395 [VRB] [HEAP-TEL] boundary: -744 bytes (bma=134 phl=4)
-21-05:38:08.400 [VRB] [HEAP-TEL] inbound: -1024 bytes (heap=19432 pin=2465 bma=134 phl=6 lt=0 revr=0)
-[WATCHDOG] Heap recovered to 21288 after emergency relief
-21-05:38:08.628 [VRB] [HEAP-TEL] boundary: -616 bytes (bma=136 phl=0)
-21-05:38:08.634 [VRB] [HEAP-TEL] inbound: -724 bytes (heap=20164 pin=2466 bma=136 phl=2 lt=0 revr=0)
-21-05:38:08.638 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=138 phl=2)
-21-05:38:08.643 [VRB] [HEAP-TEL] inbound: -1028 bytes (heap=19588 pin=2467 bma=138 phl=4 lt=0 revr=0)
-21-05:38:08.647 [VRB] [HEAP-TEL] boundary: -748 bytes (bma=140 phl=4)
-21-05:38:08.653 [VRB] [HEAP-TEL] inbound: -1168 bytes (heap=18924 pin=2468 bma=140 phl=6 lt=0 revr=0)
-21-05:38:08.681 [VRB] [HEAP-TEL] jobs: 1128 bytes (heap=20644)
-21-05:38:08.976 [VRB] [HEAP-TEL] boundary: -744 bytes (bma=130 phl=6)
-21-05:38:08.981 [VRB] [HEAP-TEL] inbound: -1016 bytes (heap=19280 pin=2469 bma=130 phl=8 lt=0 revr=0)
-[WATCHDOG] Heap recovered to 21608 after emergency relief
-21-05:38:09.185 [VRB] [HEAP-TEL] boundary: -748 bytes (bma=132 phl=0)
-21-05:38:09.190 [VRB] [HEAP-TEL] inbound: -1036 bytes (heap=20224 pin=2470 bma=132 phl=2 lt=0 revr=0)
-21-05:38:09.192 [VRB] [HEAP-TEL] jobs: 372 bytes (heap=21396)
-21-05:38:10.102 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=130 phl=2)
-21-05:38:10.107 [VRB] [HEAP-TEL] inbound: -820 bytes (heap=19992 pin=2472 bma=130 phl=4 lt=0 revr=0)
-21-05:38:10.152 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=132 phl=4)
-21-05:38:10.157 [VRB] [HEAP-TEL] inbound: -812 bytes (heap=19632 pin=2473 bma=132 phl=6 lt=0 revr=0)
-21-05:38:10.197 [VRB] [HEAP-TEL] jobs: 392 bytes (heap=20620)
-21-05:38:10.308 [VRB] [HEAP-TEL] boundary: -780 bytes (bma=130 phl=6)
-21-05:38:10.313 [VRB] [HEAP-TEL] inbound: -1060 bytes (heap=19240 pin=2474 bma=130 phl=8 lt=0 revr=0)
-[WATCHDOG] Heap recovered to 21604 after emergency relief
-21-05:38:10.465 [VRB] [HEAP-TEL] jobs: 192 bytes (heap=21796)
-21-05:38:10.536 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=130 phl=0)
-21-05:38:10.541 [VRB] [HEAP-TEL] inbound: -1192 bytes (heap=19836 pin=2475 bma=130 phl=2 lt=0 revr=0)
-21-05:38:10.545 [VRB] [HEAP-TEL] boundary: -768 bytes (bma=132 phl=2)
-21-05:38:10.550 [VRB] [HEAP-TEL] inbound: -1036 bytes (heap=19252 pin=2476 bma=132 phl=4 lt=0 revr=0)
-21-05:38:10.718 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=134 phl=4)
-21-05:38:10.724 [VRB] [HEAP-TEL] inbound: -1084 bytes (heap=19248 pin=2477 bma=134 phl=6 lt=0 revr=0)
-21-05:38:10.728 [VRB] [HEAP-TEL] boundary: -772 bytes (bma=136 phl=6)
-21-05:38:10.733 [VRB] [HEAP-TEL] inbound: -1184 bytes (heap=18580 pin=2478 bma=136 phl=8 lt=0 revr=0)
-21-05:38:10.736 [VRB] [HEAP-TEL] jobs: 768 bytes (heap=19944)
-[WATCHDOG] Heap recovered to 21500 after emergency relief
-21-05:38:11.045 [VRB] [HEAP-TEL] boundary: -744 bytes (bma=130 phl=0)
-21-05:38:11.051 [VRB] [HEAP-TEL] inbound: -1168 bytes (heap=19980 pin=2479 bma=130 phl=2 lt=0 revr=0)
-21-05:38:11.239 [VRB] [HEAP-TEL] jobs: 184 bytes (heap=20828)
-21-05:38:12.455 [VRB] [HEAP-TEL] boundary: -772 bytes (bma=130 phl=2)
-21-05:38:12.460 [VRB] [HEAP-TEL] inbound: -1040 bytes (heap=19576 pin=2481 bma=130 phl=4 lt=0 revr=0)
-21-05:38:12.494 [VRB] [HEAP-TEL] jobs: 184 bytes (heap=20564)
-21-05:38:12.892 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=130 phl=4)
-21-05:38:12.898 [VRB] [HEAP-TEL] inbound: -1036 bytes (heap=19176 pin=2482 bma=130 phl=6 lt=0 revr=0)
-[WATCHDOG] Heap recovered to 21144 after emergency relief
-21-05:38:13.011 [VRB] [HEAP-TEL] jobs: 196 bytes (heap=21340)
-21-05:38:13.050 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=130 phl=0)
-21-05:38:13.055 [VRB] [HEAP-TEL] inbound: -1032 bytes (heap=19956 pin=2483 bma=130 phl=2 lt=0 revr=0)
-21-05:38:13.263 [VRB] [HEAP-TEL] jobs: 196 bytes (heap=20956)
-21-05:38:13.685 [VRB] [HEAP-TEL] boundary: -744 bytes (bma=130 phl=2)
-21-05:38:13.690 [VRB] [HEAP-TEL] inbound: -1048 bytes (heap=19556 pin=2484 bma=130 phl=4 lt=0 revr=0)
-21-05:38:13.695 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=132 phl=4)
-21-05:38:13.701 [VRB] [HEAP-TEL] inbound: -832 bytes (heap=19008 pin=2485 bma=132 phl=6 lt=0 revr=0)
-[WATCHDOG] Heap recovered to 20932 after emergency relief
-21-05:38:13.818 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=134 phl=0)
-21-05:38:13.823 [VRB] [HEAP-TEL] inbound: -1172 bytes (heap=19656 pin=2486 bma=134 phl=2 lt=0 revr=0)
-21-05:38:13.851 [VRB] [HEAP-TEL] jobs: 584 bytes (heap=20836)
-21-05:38:13.888 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=130 phl=2)
-21-05:38:13.893 [VRB] [HEAP-TEL] inbound: -1028 bytes (heap=19456 pin=2487 bma=130 phl=4 lt=0 revr=0)
-21-05:38:13.904 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=132 phl=4)
-21-05:38:13.909 [VRB] [HEAP-TEL] inbound: -812 bytes (heap=18888 pin=2488 bma=132 phl=6 lt=0 revr=0)
-[WATCHDOG] Heap recovered to 20844 after emergency relief
-21-05:38:14.095 [VRB] [HEAP-TEL] boundary: -780 bytes (bma=134 phl=0)
-21-05:38:14.100 [VRB] [HEAP-TEL] inbound: -1000 bytes (heap=19284 pin=2489 bma=134 phl=2 lt=0 revr=0)
-21-05:38:14.104 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=136 phl=2)
-21-05:38:14.109 [VRB] [HEAP-TEL] inbound: -1016 bytes (heap=18720 pin=2490 bma=136 phl=4 lt=0 revr=0)
-21-05:38:14.111 [VRB] [HEAP-TEL] jobs: 752 bytes (heap=20276)
-21-05:38:14.218 [VRB] [HEAP-TEL] boundary: -772 bytes (bma=130 phl=4)
-21-05:38:14.223 [VRB] [HEAP-TEL] inbound: -1200 bytes (heap=18724 pin=2491 bma=130 phl=6 lt=0 revr=0)
-21-05:38:14.227 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=132 phl=6)
-21-05:38:14.232 [VRB] [HEAP-TEL] inbound: -1040 bytes (heap=18136 pin=2492 bma=132 phl=8 lt=0 revr=0)
-[WATCHDOG] Heap recovered to 20400 after emergency relief
-21-05:38:14.351 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=134 phl=0)
-21-05:38:14.356 [VRB] [HEAP-TEL] inbound: -1180 bytes (heap=19172 pin=2493 bma=134 phl=2 lt=0 revr=0)
-21-05:38:14.360 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=136 phl=2)
-21-05:38:14.365 [VRB] [HEAP-TEL] inbound: -1172 bytes (heap=18456 pin=2494 bma=136 phl=4 lt=0 revr=0)
-21-05:38:14.393 [VRB] [HEAP-TEL] jobs: 772 bytes (heap=19684)
-[WATCHDOG] Heap recovered to 20592 after emergency relief
-21-05:38:14.730 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=130 phl=0)
-21-05:38:14.735 [VRB] [HEAP-TEL] inbound: -1188 bytes (heap=19052 pin=2495 bma=130 phl=2 lt=0 revr=0)
-21-05:38:14.739 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=132 phl=2)
-21-05:38:14.744 [VRB] [HEAP-TEL] inbound: -1176 bytes (heap=18336 pin=2496 bma=132 phl=4 lt=0 revr=0)
-21-05:38:14.748 [VRB] [HEAP-TEL] boundary: -744 bytes (bma=134 phl=4)
-21-05:38:14.753 [VRB] [HEAP-TEL] inbound: -1168 bytes (heap=17620 pin=2497 bma=134 phl=6 lt=0 revr=0)
-21-05:38:14.757 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=136 phl=6)
-21-05:38:14.762 [VRB] [HEAP-TEL] inbound: -1184 bytes (heap=16888 pin=2498 bma=136 phl=8 lt=0 revr=0)
-21-05:38:14.766 [VRB] [HEAP-TEL] boundary: -768 bytes (bma=138 phl=8)
-21-05:38:14.771 [VRB] [HEAP-TEL] inbound: -1184 bytes (heap=16156 pin=2499 bma=138 phl=10 lt=0 revr=0)
-
-[WATCHDOG] CRITICAL: Free heap 18652 < 20000 — REBOOTING
-[WATCHDOG] Min free: 8752 Max alloc: 1140
-ESP-ROM:esp32s3-20210327
-Build:Mar 27 2021
-rst:0xc (RTC_SW_CPU_RST),boot:0x8 (SPI_FAST_FLASH_BOOT)
-Saved PC:0x420e2a66
-SPIWP:0xee
-mode:DIO, clock div:1
-load:0x3fce3808,len:0x41c
-load:0x403c9700,len:0x9a8
-load:0x403cc700,len:0x28ac
-entry 0x403c98b8
-[Boundary] Last automatic reset: Heap watchdog, observed=CPU software reset, heap=18652, min=8752, max_alloc=1140
-[Boundary] Released BT controller memory
-[Boundary] Provisioning check bypassed, modem installed
-[Boundary] Loaded LoRa config from EEPROM
-[Boundary] LoRa: freq=914875000 bw=125000 sf=10 cr=5 txp=28
-[Boundary] SXSYNC requested=1424 reg=1424
-[Boundary] DIO2RF=1
-[Boundary] SXFREQ hz=914875000 reg=392e0000
-[Boundary] SXPA pa=04070001 ocp=28 tx=0202
-[Boundary] PA detect: model=GC1109
-[Boundary] TXP: requested=28 effective=28 modem=19 pa=1
-[Boundary] SXPA pa=04070001 ocp=28 tx=1302
-00:00:04.056 [---] Initializing filesystem...
-00:00:04.058 [INF] LittleFS mounting filesystem
-00:00:04.071 [DBG] LittleFS filesystem is ready
-00:00:04.072 [---] write_file: writing to file /test
-[ 4075][E][vfs_api.cpp:105] open(): /test does not exist, no permits for creation
-00:00:04.094 [---] write_file: wrote 4 bytes to file /test
-00:00:04.096 [---] remove_file: removing file /test
-00:00:04.106 [---] Finished initializing
-
-00:00:04.107 [---] Registering filesystem...
-00:00:04.108 [---] Registering filesystem...
-00:00:04.109 [---] Listing filesystem...
-00:00:04.110 [---] Finished listing
-00:00:04.111 [---] FILE: destination_table
-00:00:04.112 [---] read_file: reading from file /destination_table
-00:00:04.136 [---] read_file: read 1451 bytes from file /destination_table
-00:00:04.137 [---] {"13f4b14dd364a672e853a37fb534678c":[{"timestamp":1826281.23,"next_hop":"13f4b14dd364a672e853a37fb534678c","hops":1,"expires":1912245.503,"interface_hash":"4d520f5a502f14f2be77cbc242d2f79f619f42750c3de07c12840d6540627825","packet_hash":"34897b5e8dc3b370122f4d61db81ba5b9527a312c936ba6cd06da991ab2ad1c6"}],"29f9a20cb04760edbc497d668c255ab7":[{"timestamp":1826202.806,"next_hop":"29f9a20cb04760edbc497d668c255ab7","hops":1,"expires":1912350.397,"interface_hash":"337b0aea851f05a0ba0e7c2f9b2fdd1c38b74b2fa290b8ef05b11518a4625485","packet_hash":"bd8af3391af1e32862b3b8c4cbcf8962b70ff6aa700c75c8cc3b0138863b2937"},{"timestamp":1825876.487,"next_hop":"29f9a20cb04760edbc497d668c255ab7","hops":1,"expires":1912276.487,"interface_hash":"337b0aea851f05a0ba0e7c2f9b2fdd1c38b74b2fa290b8ef05b11518a4625485","packet_hash":"3f4680fe03740e3a822306a9a8aac76fbc70b6e3c6bb327152c2a7a42bc56662"},{"timestamp":1825869.199,"next_hop":"29f9a20cb04760edbc497d668c255ab7","hops":1,"expires":1911933.58,"interface_hash":"337b0aea851f05a0ba0e7c2f9b2fdd1c38b74b2fa290b8ef05b11518a4625485","packet_hash":"312b0b0b41d6c9a5014d3609ab4c77dafd0680fcbc1bc66ae0d8cc6e696377a1"}],"a75c35ae3687a0abcc224fafafe44618":[{"timestamp":1825845.635,"next_hop":"a75c35ae3687a0abcc224fafafe44618","hops":1,"expires":1912245.635,"interface_hash":"4d520f5a502f14f2be77cbc242d2f79f619f42750c3de07c12840d6540627825","packet_hash":"23f8b8c079c924756c04c7212479ea32b5acb52870c2ca26080eb9991f5a285b"}],}
-
-Starting RNS...
-21-05:37:38.397 [INF] Total memory: 322860
-21-05:37:38.429 [INF] Total flash: 3538944
-21-05:37:38.430 [INF] Starting Transport...
-21-05:37:38.431 [INF] Transport starting...
-21-05:37:38.573 [VRB] Loaded Transport Identity from storage
-21-05:37:38.576 [INF] Transport mode is enabled
-21-05:37:40.048 [VRB] [LoRa] TX 167 bytes
-21-05:37:40.049 [NOT] Transport Instance will respond to probe requests on {Destination:5a55c38ff9ad567685b069878f7d3f5b}
-21-05:37:40.050 [VRB] Transport instance {Identity:7e9c03b9de6806839acb15dc540cc91d} started
-21-05:37:40.148 [VRB] mem: 207832 (64%) [0] flash: 3477504 (98%) [0] paths: 3 dsts: 3 revr: 0 annc: 0 held: 0
-21-05:37:40.149 [VRB] preqs: 0 dpreqs: 0 ppreqs: 0 dprt: 0 cdsts: 2 chshs: 2
-21-05:37:40.150 [VRB] phl: 1 rcp: 0 lt: 0 pl: 0 al: 0 tun: 0
-21-05:37:40.151 [VRB] bla: 0 bma: 0
-21-05:37:40.151 [VRB] pin: 0 pout: 1 padd: 0 dpr: 1 ikd: 0 ia: 0
-
-[TcpIF] Connecting to rmap.world:4242 (DNS)...
-[TcpIF] Resolved rmap.world -> 217.154.9.220
-[TcpIF] Connected to backbone at rmap.world:4242
-[TcpIF] Connecting to rns.beleth.net:4242 (DNS)...
-[TcpIF] Resolved rns.beleth.net -> 129.213.74.184
-[TcpIF] Failed to connect to rns.beleth.net:4242 (attempt 1, next retry in 20s)
-[TcpIF] Server listening on port 4242
-[mDNS] STA up: rtnodee960.local (_reticulum._tcp port 4242)
-21-05:37:46.542 [INF] [Advertise] Device advertisement ENABLED — first announce in ~60s
-21-05:37:46.548 [VRB] [HEAP-TEL] boundary: -828 bytes (bma=2 phl=1)
-21-05:37:46.553 [VRB] [HEAP-TEL] inbound: -1300 bytes (heap=197108 pin=1 bma=2 phl=3 lt=0 revr=0)
-21-05:37:46.557 [VRB] [HEAP-TEL] boundary: -788 bytes (bma=4 phl=3)
-21-05:37:46.563 [VRB] [HEAP-TEL] inbound: -1072 bytes (heap=196624 pin=2 bma=4 phl=5 lt=0 revr=0)
-21-05:37:46.567 [VRB] [HEAP-TEL] boundary: -824 bytes (bma=6 phl=5)
-21-05:37:46.572 [VRB] [HEAP-TEL] inbound: -1244 bytes (heap=195844 pin=3 bma=6 phl=7 lt=0 revr=0)
-21-05:37:46.576 [VRB] [HEAP-TEL] boundary: -776 bytes (bma=8 phl=7)
-21-05:37:46.581 [VRB] [HEAP-TEL] inbound: -1324 bytes (heap=194972 pin=4 bma=8 phl=9 lt=0 revr=0)
-21-05:37:46.589 [VRB] [HEAP-TEL] boundary: -892 bytes (bma=10 phl=9)
-21-05:37:46.594 [VRB] [HEAP-TEL] inbound: -1312 bytes (heap=194136 pin=6 bma=10 phl=11 lt=0 revr=0)
-21-05:37:46.598 [VRB] [HEAP-TEL] boundary: -772 bytes (bma=12 phl=11)
-21-05:37:46.603 [VRB] [HEAP-TEL] inbound: -1188 bytes (heap=193444 pin=7 bma=12 phl=13 lt=0 revr=0)
-[Boundary] Boot stable — bootloop counter cleared
-21-05:37:47.202 [VRB] [LoRa] TXSTART 167 bytes
-[Boundary] TXCFG f=914875000 sf=10 bw=4 cr=1 ldro=0 pre=18 hdr=0 len=168 crc=1 iq=0 txp=19
-[Boundary] TXDONE irq=0001 timeout=0 pa=1
-21-05:37:48.890 [VRB] [HEAP-TEL] boundary: -788 bytes (bma=14 phl=13)
-21-05:37:48.896 [VRB] [HEAP-TEL] inbound: -1208 bytes (heap=192172 pin=9 bma=14 phl=15 lt=0 revr=0)
-21-05:37:49.332 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=16 phl=15)
-21-05:37:49.337 [VRB] [HEAP-TEL] inbound: -1436 bytes (heap=191200 pin=10 bma=16 phl=17 lt=0 revr=0)
-21-05:37:49.341 [VRB] [HEAP-TEL] boundary: -1000 bytes (bma=18 phl=17)
-21-05:37:49.346 [VRB] [HEAP-TEL] inbound: -1412 bytes (heap=190240 pin=11 bma=18 phl=19 lt=0 revr=0)
-21-05:37:49.350 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=20 phl=19)
-21-05:37:49.355 [VRB] [HEAP-TEL] inbound: -1180 bytes (heap=189512 pin=12 bma=20 phl=21 lt=0 revr=0)
-21-05:37:49.359 [VRB] [HEAP-TEL] boundary: -780 bytes (bma=22 phl=21)
-21-05:37:49.364 [VRB] [HEAP-TEL] inbound: -1192 bytes (heap=188784 pin=13 bma=22 phl=23 lt=0 revr=0)
-21-05:37:49.368 [VRB] [HEAP-TEL] boundary: -744 bytes (bma=24 phl=23)
-21-05:37:49.373 [VRB] [HEAP-TEL] inbound: -1168 bytes (heap=188080 pin=14 bma=24 phl=25 lt=0 revr=0)
-21-05:37:49.377 [VRB] [HEAP-TEL] boundary: -748 bytes (bma=26 phl=25)
-21-05:37:49.382 [VRB] [HEAP-TEL] inbound: -1160 bytes (heap=187372 pin=15 bma=26 phl=27 lt=0 revr=0)
-21-05:37:49.386 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=28 phl=27)
-21-05:37:49.391 [VRB] [HEAP-TEL] inbound: -1176 bytes (heap=186652 pin=16 bma=28 phl=29 lt=0 revr=0)
-21-05:37:49.532 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=30 phl=29)
-21-05:37:49.537 [VRB] [HEAP-TEL] inbound: -988 bytes (heap=186148 pin=17 bma=30 phl=31 lt=0 revr=0)
-21-05:37:49.741 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=32 phl=31)
-21-05:37:49.746 [VRB] [HEAP-TEL] inbound: -1680 bytes (heap=184924 pin=18 bma=32 phl=33 lt=0 revr=0)
-21-05:37:49.750 [VRB] [HEAP-TEL] boundary: -1280 bytes (bma=34 phl=33)
-21-05:37:49.755 [VRB] [HEAP-TEL] inbound: -1692 bytes (heap=183692 pin=19 bma=34 phl=35 lt=0 revr=0)
-21-05:37:49.759 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=36 phl=35)
-21-05:37:49.764 [VRB] [HEAP-TEL] inbound: -1216 bytes (heap=182932 pin=20 bma=36 phl=37 lt=0 revr=0)
-21-05:37:49.768 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=38 phl=37)
-21-05:37:49.773 [VRB] [HEAP-TEL] inbound: -1176 bytes (heap=182252 pin=21 bma=38 phl=39 lt=0 revr=0)
-21-05:37:49.850 [VRB] [HEAP-TEL] boundary: -776 bytes (bma=40 phl=39)
-21-05:37:49.855 [VRB] [HEAP-TEL] inbound: -1188 bytes (heap=181312 pin=22 bma=40 phl=41 lt=0 revr=0)
-21-05:37:49.949 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=42 phl=41)
-21-05:37:49.954 [VRB] [HEAP-TEL] inbound: -1192 bytes (heap=180944 pin=23 bma=42 phl=43 lt=0 revr=0)
-21-05:37:50.163 [VRB] [HEAP-TEL] boundary: -748 bytes (bma=44 phl=43)
-21-05:37:50.168 [VRB] [HEAP-TEL] inbound: -1348 bytes (heap=180044 pin=24 bma=44 phl=45 lt=0 revr=0)
-21-05:37:50.173 [VRB] [HEAP-TEL] boundary: -784 bytes (bma=46 phl=45)
-21-05:37:50.178 [VRB] [HEAP-TEL] inbound: -1208 bytes (heap=179480 pin=25 bma=46 phl=47 lt=0 revr=0)
-21-05:37:50.462 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=48 phl=47)
-21-05:37:50.468 [VRB] [HEAP-TEL] inbound: -1172 bytes (heap=178556 pin=26 bma=48 phl=49 lt=0 revr=0)
-21-05:37:50.472 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=50 phl=49)
-21-05:37:50.477 [VRB] [HEAP-TEL] inbound: -1176 bytes (heap=177836 pin=27 bma=50 phl=51 lt=0 revr=0)
-21-05:37:50.513 [VRB] [HEAP-TEL] boundary: -772 bytes (bma=52 phl=51)
-21-05:37:50.519 [VRB] [HEAP-TEL] inbound: -1200 bytes (heap=177288 pin=28 bma=52 phl=53 lt=0 revr=0)
-21-05:37:50.634 [VRB] [HEAP-TEL] boundary: -748 bytes (bma=54 phl=53)
-21-05:37:50.640 [VRB] [HEAP-TEL] inbound: -956 bytes (heap=176572 pin=29 bma=54 phl=55 lt=0 revr=0)
-21-05:37:50.860 [VRB] [HEAP-TEL] boundary: -744 bytes (bma=56 phl=55)
-21-05:37:50.866 [VRB] [HEAP-TEL] inbound: -1168 bytes (heap=175852 pin=30 bma=56 phl=57 lt=0 revr=0)
-21-05:37:51.079 [VRB] [HEAP-TEL] boundary: -788 bytes (bma=58 phl=57)
-21-05:37:51.084 [VRB] [HEAP-TEL] inbound: -1200 bytes (heap=175384 pin=33 bma=58 phl=59 lt=0 revr=0)
-21-05:37:51.274 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=60 phl=59)
-21-05:37:51.280 [VRB] [HEAP-TEL] inbound: -1172 bytes (heap=174236 pin=34 bma=60 phl=61 lt=0 revr=0)
-21-05:37:51.284 [VRB] [HEAP-TEL] boundary: -772 bytes (bma=62 phl=61)
-21-05:37:51.289 [VRB] [HEAP-TEL] inbound: -1188 bytes (heap=173724 pin=35 bma=62 phl=63 lt=0 revr=0)
-21-05:37:52.193 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=64 phl=63)
-21-05:37:52.199 [VRB] [HEAP-TEL] inbound: -2200 bytes (heap=172200 pin=36 bma=64 phl=65 lt=0 revr=0)
-21-05:37:52.811 [VRB] [HEAP-TEL] boundary: -1796 bytes (bma=66 phl=65)
-21-05:37:52.817 [VRB] [HEAP-TEL] inbound: -2208 bytes (heap=170240 pin=37 bma=66 phl=67 lt=0 revr=0)
-21-05:37:53.001 [VRB] [HEAP-TEL] jobs: 156 bytes (heap=171200)
-21-05:37:53.220 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=68 phl=67)
-21-05:37:53.225 [VRB] [HEAP-TEL] inbound: -1180 bytes (heap=169876 pin=38 bma=68 phl=69 lt=0 revr=0)
-21-05:37:53.267 [VRB] [HEAP-TEL] jobs: 156 bytes (heap=170632)
-21-05:37:53.628 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=70 phl=69)
-21-05:37:53.633 [VRB] [HEAP-TEL] inbound: -1172 bytes (heap=169316 pin=39 bma=70 phl=71 lt=0 revr=0)
-21-05:37:53.784 [VRB] [HEAP-TEL] jobs: 156 bytes (heap=170072)
-21-05:37:54.652 [VRB] [HEAP-TEL] boundary: -748 bytes (bma=72 phl=71)
-21-05:37:54.657 [VRB] [HEAP-TEL] inbound: -1160 bytes (heap=168768 pin=40 bma=72 phl=73 lt=0 revr=0)
-21-05:37:54.677 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=74 phl=73)
-21-05:37:54.682 [VRB] [HEAP-TEL] inbound: -976 bytes (heap=167832 pin=41 bma=74 phl=75 lt=0 revr=0)
-21-05:37:54.816 [VRB] [HEAP-TEL] jobs: 312 bytes (heap=168952)
-21-05:37:54.860 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=76 phl=75)
-21-05:37:54.865 [VRB] [HEAP-TEL] inbound: -1176 bytes (heap=167412 pin=42 bma=76 phl=77 lt=0 revr=0)
-21-05:37:55.068 [VRB] [HEAP-TEL] jobs: 156 bytes (heap=168392)
-21-05:37:55.575 [VRB] [HEAP-TEL] boundary: -776 bytes (bma=78 phl=77)
-21-05:37:55.579 [VRB] [HEAP-TEL] inbound: -1192 bytes (heap=166784 pin=43 bma=78 phl=79 lt=0 revr=0)
-21-05:37:55.584 [VRB] [HEAP-TEL] boundary: -780 bytes (bma=80 phl=79)
-21-05:37:55.590 [VRB] [HEAP-TEL] inbound: -1192 bytes (heap=166068 pin=44 bma=80 phl=81 lt=0 revr=0)
-21-05:37:55.594 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=82 phl=81)
-21-05:37:55.599 [VRB] [HEAP-TEL] inbound: -1188 bytes (heap=165404 pin=45 bma=82 phl=83 lt=0 revr=0)
-21-05:37:55.601 [VRB] [HEAP-TEL] jobs: 468 bytes (heap=166696)
-21-05:37:56.801 [VRB] [HEAP-TEL] boundary: -780 bytes (bma=84 phl=83)
-21-05:37:56.807 [VRB] [HEAP-TEL] inbound: -1208 bytes (heap=165136 pin=46 bma=84 phl=85 lt=0 revr=0)
-21-05:37:56.816 [VRB] [HEAP-TEL] boundary: -544 bytes (bma=86 phl=85)
-21-05:37:56.821 [VRB] [HEAP-TEL] inbound: -964 bytes (heap=164628 pin=47 bma=86 phl=87 lt=0 revr=0)
-21-05:37:56.880 [VRB] [HEAP-TEL] jobs: 312 bytes (heap=165536)
-21-05:37:57.313 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=88 phl=87)
-21-05:37:57.319 [VRB] [HEAP-TEL] inbound: -1204 bytes (heap=164188 pin=48 bma=88 phl=89 lt=0 revr=0)
-21-05:37:57.396 [VRB] [HEAP-TEL] jobs: 156 bytes (heap=164944)
-21-05:37:57.519 [VRB] [HEAP-TEL] boundary: -748 bytes (bma=90 phl=89)
-21-05:37:57.525 [VRB] [HEAP-TEL] inbound: -1168 bytes (heap=163632 pin=49 bma=90 phl=91 lt=0 revr=0)
-21-05:37:57.648 [VRB] [HEAP-TEL] jobs: 156 bytes (heap=164384)
-21-05:37:57.827 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=92 phl=91)
-21-05:37:57.832 [VRB] [HEAP-TEL] inbound: -1168 bytes (heap=162864 pin=50 bma=92 phl=93 lt=0 revr=0)
-21-05:37:57.836 [VRB] [HEAP-TEL] boundary: -776 bytes (bma=94 phl=93)
-21-05:37:57.841 [VRB] [HEAP-TEL] inbound: -984 bytes (heap=162336 pin=51 bma=94 phl=95 lt=0 revr=0)
-21-05:37:57.846 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=96 phl=95)
-21-05:37:57.851 [VRB] [HEAP-TEL] inbound: -1172 bytes (heap=161388 pin=52 bma=96 phl=97 lt=0 revr=0)
-21-05:37:57.913 [VRB] [HEAP-TEL] jobs: 480 bytes (heap=162704)
-21-05:37:58.032 [VRB] [HEAP-TEL] boundary: -556 bytes (bma=98 phl=97)
-21-05:37:58.037 [VRB] [HEAP-TEL] inbound: -972 bytes (heap=161136 pin=53 bma=98 phl=99 lt=0 revr=0)
-21-05:37:58.087 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=100 phl=99)
-21-05:37:58.092 [VRB] [HEAP-TEL] inbound: -1464 bytes (heap=160124 pin=54 bma=100 phl=101 lt=0 revr=0)
-21-05:37:58.144 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=102 phl=101)
-21-05:37:58.150 [VRB] [HEAP-TEL] inbound: -1172 bytes (heap=159940 pin=55 bma=102 phl=103 lt=0 revr=0)
-21-05:37:58.164 [VRB] [HEAP-TEL] jobs: 796 bytes (heap=161336)
-21-05:37:58.340 [VRB] [HEAP-TEL] boundary: -540 bytes (bma=104 phl=100)
-21-05:37:58.346 [VRB] [HEAP-TEL] inbound: -996 bytes (heap=159780 pin=56 bma=104 phl=102 lt=0 revr=0)
-21-05:37:58.350 [VRB] [HEAP-TEL] boundary: -776 bytes (bma=106 phl=102)
-21-05:37:58.355 [VRB] [HEAP-TEL] inbound: -1200 bytes (heap=159076 pin=57 bma=106 phl=104 lt=0 revr=0)
-21-05:37:58.429 [VRB] [HEAP-TEL] jobs: 752 bytes (heap=160636)
-21-05:37:58.546 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=108 phl=100)
-21-05:37:58.551 [VRB] [HEAP-TEL] inbound: -980 bytes (heap=159020 pin=58 bma=108 phl=102 lt=0 revr=0)
-21-05:37:58.556 [VRB] [HEAP-TEL] boundary: -852 bytes (bma=110 phl=102)
-21-05:37:58.561 [VRB] [HEAP-TEL] inbound: -1236 bytes (heap=158300 pin=59 bma=110 phl=104 lt=0 revr=0)
-21-05:37:58.565 [VRB] [HEAP-TEL] boundary: -768 bytes (bma=112 phl=104)
-21-05:37:58.570 [VRB] [HEAP-TEL] inbound: -1184 bytes (heap=157608 pin=60 bma=112 phl=106 lt=0 revr=0)
-21-05:37:58.681 [VRB] [HEAP-TEL] jobs: 1124 bytes (heap=159560)
-21-05:37:58.749 [VRB] [HEAP-TEL] boundary: -540 bytes (bma=114 phl=100)
-21-05:37:58.753 [VRB] [HEAP-TEL] inbound: -960 bytes (heap=158248 pin=61 bma=114 phl=102 lt=0 revr=0)
-21-05:37:58.758 [VRB] [HEAP-TEL] boundary: -748 bytes (bma=116 phl=102)
-21-05:37:58.763 [VRB] [HEAP-TEL] inbound: -1164 bytes (heap=157536 pin=62 bma=116 phl=104 lt=0 revr=0)
-21-05:37:58.853 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=118 phl=104)
-21-05:37:58.859 [VRB] [HEAP-TEL] inbound: -1172 bytes (heap=156584 pin=63 bma=118 phl=106 lt=0 revr=0)
-21-05:37:58.881 [VRB] [HEAP-TEL] boundary: -556 bytes (bma=120 phl=106)
-21-05:37:58.886 [VRB] [HEAP-TEL] inbound: -968 bytes (heap=155856 pin=64 bma=120 phl=108 lt=0 revr=0)
-21-05:37:58.933 [VRB] [HEAP-TEL] jobs: 1500 bytes (heap=158196)
-21-05:37:59.056 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=122 phl=100)
-21-05:37:59.061 [VRB] [HEAP-TEL] inbound: -1192 bytes (heap=156860 pin=65 bma=122 phl=102 lt=0 revr=0)
-21-05:37:59.065 [VRB] [HEAP-TEL] boundary: -744 bytes (bma=124 phl=102)
-21-05:37:59.070 [VRB] [HEAP-TEL] inbound: -1176 bytes (heap=156136 pin=66 bma=124 phl=104 lt=0 revr=0)
-21-05:37:59.102 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=126 phl=104)
-21-05:37:59.107 [VRB] [HEAP-TEL] inbound: -1192 bytes (heap=155156 pin=67 bma=126 phl=106 lt=0 revr=0)
-21-05:37:59.185 [VRB] [HEAP-TEL] jobs: 1128 bytes (heap=157132)
-21-05:37:59.875 [VRB] [HEAP-TEL] boundary: -548 bytes (bma=128 phl=100)
-21-05:37:59.881 [VRB] [HEAP-TEL] inbound: -980 bytes (heap=155556 pin=68 bma=128 phl=102 lt=0 revr=0)
-21-05:37:59.885 [VRB] [HEAP-TEL] boundary: -2828 bytes (bma=130 phl=102)
-21-05:37:59.890 [VRB] [HEAP-TEL] inbound: -3264 bytes (heap=152744 pin=69 bma=130 phl=104 lt=0 revr=0)
-21-05:37:59.939 [VRB] [HEAP-TEL] jobs: 968 bytes (heap=154560)
-21-05:38:00.084 [VRB] [HEAP-TEL] boundary: -788 bytes (bma=130 phl=100)
-21-05:38:00.088 [VRB] [HEAP-TEL] inbound: -1208 bytes (heap=153208 pin=70 bma=130 phl=102 lt=0 revr=0)
-21-05:38:00.191 [VRB] [HEAP-TEL] jobs: 560 bytes (heap=154376)
-21-05:38:00.701 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=130 phl=100)
-21-05:38:00.706 [VRB] [HEAP-TEL] inbound: -1180 bytes (heap=152796 pin=71 bma=130 phl=102 lt=0 revr=0)
-21-05:38:00.866 [VRB] [HEAP-TEL] boundary: -776 bytes (bma=132 phl=102)
-21-05:38:00.872 [VRB] [HEAP-TEL] inbound: -1188 bytes (heap=152076 pin=72 bma=132 phl=104 lt=0 revr=0)
-21-05:38:00.945 [VRB] [HEAP-TEL] jobs: 1148 bytes (heap=154088)
-21-05:38:01.924 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=130 phl=100)
-21-05:38:01.930 [VRB] [HEAP-TEL] inbound: -1184 bytes (heap=152532 pin=73 bma=130 phl=102 lt=0 revr=0)
-21-05:38:02.439 [VRB] [HEAP-TEL] boundary: -768 bytes (bma=132 phl=102)
-21-05:38:02.443 [VRB] [HEAP-TEL] inbound: -1032 bytes (heap=151956 pin=76 bma=132 phl=104 lt=0 revr=0)
-21-05:38:02.448 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=134 phl=104)
-21-05:38:02.453 [VRB] [HEAP-TEL] inbound: -1168 bytes (heap=151244 pin=77 bma=134 phl=106 lt=0 revr=0)
-21-05:38:02.493 [VRB] [HEAP-TEL] jobs: 1748 bytes (heap=153820)
-21-05:38:02.644 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=130 phl=100)
-21-05:38:02.648 [VRB] [HEAP-TEL] inbound: -1044 bytes (heap=152424 pin=78 bma=130 phl=102 lt=0 revr=0)
-21-05:38:02.759 [VRB] [HEAP-TEL] jobs: 584 bytes (heap=153812)
-21-05:38:03.280 [VRB] [HEAP-TEL] boundary: -748 bytes (bma=130 phl=100)
-21-05:38:03.286 [VRB] [HEAP-TEL] inbound: -1212 bytes (heap=152204 pin=79 bma=130 phl=102 lt=0 revr=0)
-21-05:38:03.290 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=132 phl=102)
-21-05:38:03.295 [VRB] [HEAP-TEL] inbound: -1200 bytes (heap=151504 pin=80 bma=132 phl=104 lt=0 revr=0)
-21-05:38:03.297 [VRB] [HEAP-TEL] jobs: 1120 bytes (heap=153432)
-21-05:38:04.422 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=130 phl=100)
-21-05:38:04.426 [VRB] [HEAP-TEL] inbound: -1200 bytes (heap=151868 pin=81 bma=130 phl=102 lt=0 revr=0)
-21-05:38:04.560 [VRB] [HEAP-TEL] jobs: 592 bytes (heap=153280)
-21-05:38:04.591 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=130 phl=100)
-21-05:38:04.596 [VRB] [HEAP-TEL] inbound: -988 bytes (heap=151672 pin=82 bma=130 phl=102 lt=0 revr=0)
-21-05:38:04.600 [VRB] [HEAP-TEL] boundary: -748 bytes (bma=132 phl=102)
-21-05:38:04.606 [VRB] [HEAP-TEL] inbound: -1384 bytes (heap=150796 pin=83 bma=132 phl=104 lt=0 revr=0)
-21-05:38:04.657 [VRB] [HEAP-TEL] boundary: -768 bytes (bma=134 phl=104)
-21-05:38:04.662 [VRB] [HEAP-TEL] inbound: -1204 bytes (heap=150256 pin=84 bma=134 phl=106 lt=0 revr=0)
-21-05:38:04.791 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=136 phl=106)
-21-05:38:04.796 [VRB] [HEAP-TEL] inbound: -1204 bytes (heap=149684 pin=85 bma=136 phl=108 lt=0 revr=0)
-21-05:38:04.800 [VRB] [HEAP-TEL] boundary: -744 bytes (bma=138 phl=108)
-21-05:38:04.804 [VRB] [HEAP-TEL] inbound: -1172 bytes (heap=149008 pin=86 bma=138 phl=110 lt=0 revr=0)
-21-05:38:04.837 [VRB] [HEAP-TEL] jobs: 2816 bytes (heap=152420)
-21-05:38:05.613 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=130 phl=100)
-21-05:38:05.618 [VRB] [HEAP-TEL] inbound: -1200 bytes (heap=150884 pin=87 bma=130 phl=102 lt=0 revr=0)
-21-05:38:05.622 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=132 phl=102)
-21-05:38:05.627 [VRB] [HEAP-TEL] inbound: -1172 bytes (heap=150356 pin=88 bma=132 phl=104 lt=0 revr=0)
-21-05:38:05.631 [VRB] [HEAP-TEL] boundary: -748 bytes (bma=134 phl=104)
-21-05:38:05.636 [VRB] [HEAP-TEL] inbound: -1184 bytes (heap=149624 pin=89 bma=134 phl=106 lt=0 revr=0)
-21-05:38:05.640 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=136 phl=106)
-21-05:38:05.645 [VRB] [HEAP-TEL] inbound: -1172 bytes (heap=148904 pin=90 bma=136 phl=108 lt=0 revr=0)
-21-05:38:05.649 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=138 phl=108)
-21-05:38:05.654 [VRB] [HEAP-TEL] inbound: -1172 bytes (heap=148188 pin=91 bma=138 phl=110 lt=0 revr=0)
-21-05:38:05.715 [VRB] [HEAP-TEL] boundary: -748 bytes (bma=140 phl=110)
-21-05:38:05.720 [VRB] [HEAP-TEL] inbound: -1164 bytes (heap=147248 pin=92 bma=140 phl=112 lt=0 revr=0)
-21-05:38:05.873 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=142 phl=112)
-21-05:38:05.879 [VRB] [HEAP-TEL] inbound: -1172 bytes (heap=146544 pin=93 bma=142 phl=114 lt=0 revr=0)
-21-05:38:05.883 [VRB] [HEAP-TEL] boundary: -748 bytes (bma=144 phl=114)
-21-05:38:05.888 [VRB] [HEAP-TEL] inbound: -1160 bytes (heap=145844 pin=94 bma=144 phl=116 lt=0 revr=0)
-21-05:38:05.890 [VRB] [HEAP-TEL] jobs: 4616 bytes (heap=151276)
-21-05:38:05.923 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=130 phl=100)
-21-05:38:05.928 [VRB] [HEAP-TEL] inbound: -1188 bytes (heap=149736 pin=95 bma=130 phl=102 lt=0 revr=0)
-21-05:38:06.048 [VRB] [HEAP-TEL] boundary: -552 bytes (bma=132 phl=102)
-21-05:38:06.053 [VRB] [HEAP-TEL] inbound: -988 bytes (heap=148992 pin=96 bma=132 phl=104 lt=0 revr=0)
-21-05:38:06.066 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=134 phl=104)
-21-05:38:06.071 [VRB] [HEAP-TEL] inbound: -1176 bytes (heap=148476 pin=97 bma=134 phl=106 lt=0 revr=0)
-21-05:38:06.141 [VRB] [HEAP-TEL] jobs: 1708 bytes (heap=150784)
-[TcpIF] Connecting to rns.beleth.net:4242 (cached IP)...
-[TcpIF] Cached IP failed, retrying with DNS
-[TcpIF] Connecting to rns.beleth.net:4242 (DNS)...
-[TcpIF] Resolved rns.beleth.net -> 129.213.74.184
-[TcpIF] Failed to connect to rns.beleth.net:4242 (attempt 2, next retry in 40s)
-21-05:38:18.572 [VRB] [HEAP-TEL] boundary: -748 bytes (bma=130 phl=100)
-21-05:38:18.577 [VRB] [HEAP-TEL] inbound: -1024 bytes (heap=149476 pin=98 bma=130 phl=102 lt=0 revr=0)
-21-05:38:18.582 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=132 phl=102)
-21-05:38:18.587 [VRB] [HEAP-TEL] inbound: -1036 bytes (heap=148892 pin=99 bma=132 phl=104 lt=0 revr=0)
-21-05:38:18.595 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=134 phl=104)
-21-05:38:18.600 [VRB] [HEAP-TEL] inbound: -1028 bytes (heap=148316 pin=101 bma=134 phl=106 lt=0 revr=0)
-21-05:38:18.604 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=136 phl=106)
-21-05:38:18.609 [VRB] [HEAP-TEL] inbound: -1168 bytes (heap=147600 pin=102 bma=136 phl=108 lt=0 revr=0)
-21-05:38:18.613 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=138 phl=108)
-21-05:38:18.618 [VRB] [HEAP-TEL] inbound: -1036 bytes (heap=147016 pin=103 bma=138 phl=110 lt=0 revr=0)
-21-05:38:18.622 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=140 phl=110)
-21-05:38:18.627 [VRB] [HEAP-TEL] inbound: -1176 bytes (heap=146332 pin=104 bma=140 phl=112 lt=0 revr=0)
-21-05:38:18.833 [VRB] [HEAP-TEL] jobs: 3440 bytes (heap=150368)
-21-05:38:25.683 [VRB] [HEAP-TEL] boundary: -744 bytes (bma=130 phl=100)
-21-05:38:25.687 [VRB] [HEAP-TEL] inbound: -1168 bytes (heap=148844 pin=105 bma=130 phl=102 lt=0 revr=0)
-21-05:38:25.692 [VRB] [HEAP-TEL] boundary: -744 bytes (bma=132 phl=102)
-21-05:38:25.697 [VRB] [HEAP-TEL] inbound: -1176 bytes (heap=148120 pin=106 bma=132 phl=104 lt=0 revr=0)
-21-05:38:25.798 [VRB] [HEAP-TEL] jobs: 1136 bytes (heap=150064)
-21-05:38:26.095 [VRB] [HEAP-TEL] boundary: -748 bytes (bma=130 phl=100)
-21-05:38:26.100 [VRB] [HEAP-TEL] inbound: -1184 bytes (heap=148480 pin=107 bma=130 phl=102 lt=0 revr=0)
-21-05:38:26.104 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=132 phl=102)
-21-05:38:26.109 [VRB] [HEAP-TEL] inbound: -1184 bytes (heap=147752 pin=108 bma=132 phl=104 lt=0 revr=0)
-21-05:38:26.113 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=134 phl=104)
-21-05:38:26.118 [VRB] [HEAP-TEL] inbound: -1180 bytes (heap=147024 pin=109 bma=134 phl=106 lt=0 revr=0)
-21-05:38:26.122 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=136 phl=106)
-21-05:38:26.127 [VRB] [HEAP-TEL] inbound: -1044 bytes (heap=146432 pin=110 bma=136 phl=108 lt=0 revr=0)
-21-05:38:26.131 [VRB] [HEAP-TEL] boundary: -768 bytes (bma=138 phl=108)
-21-05:38:26.136 [VRB] [HEAP-TEL] inbound: -1208 bytes (heap=145680 pin=111 bma=138 phl=110 lt=0 revr=0)
-21-05:38:26.140 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=140 phl=110)
-21-05:38:26.145 [VRB] [HEAP-TEL] inbound: -1180 bytes (heap=144960 pin=112 bma=140 phl=112 lt=0 revr=0)
-21-05:38:26.150 [VRB] [HEAP-TEL] boundary: -776 bytes (bma=142 phl=112)
-21-05:38:26.155 [VRB] [HEAP-TEL] inbound: -1204 bytes (heap=144220 pin=113 bma=142 phl=114 lt=0 revr=0)
-21-05:38:26.159 [VRB] [HEAP-TEL] boundary: -776 bytes (bma=144 phl=114)
-21-05:38:26.164 [VRB] [HEAP-TEL] inbound: -1196 bytes (heap=143488 pin=114 bma=144 phl=116 lt=0 revr=0)
-21-05:38:26.168 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=146 phl=116)
-21-05:38:26.173 [VRB] [HEAP-TEL] inbound: -1180 bytes (heap=142772 pin=115 bma=146 phl=118 lt=0 revr=0)
-21-05:38:26.177 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=148 phl=118)
-21-05:38:26.182 [VRB] [HEAP-TEL] inbound: -1172 bytes (heap=142056 pin=116 bma=148 phl=120 lt=0 revr=0)
-21-05:38:26.186 [VRB] [HEAP-TEL] boundary: -772 bytes (bma=150 phl=120)
-21-05:38:26.191 [VRB] [HEAP-TEL] inbound: -1184 bytes (heap=141336 pin=117 bma=150 phl=122 lt=0 revr=0)
-21-05:38:26.195 [VRB] [HEAP-TEL] boundary: -784 bytes (bma=152 phl=122)
-21-05:38:26.200 [VRB] [HEAP-TEL] inbound: -1196 bytes (heap=140604 pin=118 bma=152 phl=124 lt=0 revr=0)
-21-05:38:26.204 [VRB] [HEAP-TEL] boundary: -792 bytes (bma=154 phl=124)
-21-05:38:26.209 [VRB] [HEAP-TEL] inbound: -1204 bytes (heap=139888 pin=119 bma=154 phl=126 lt=0 revr=0)
-21-05:38:26.213 [VRB] [HEAP-TEL] boundary: -776 bytes (bma=156 phl=126)
-21-05:38:26.217 [VRB] [HEAP-TEL] inbound: -1192 bytes (heap=139176 pin=120 bma=156 phl=128 lt=0 revr=0)
-21-05:38:26.221 [VRB] [HEAP-TEL] boundary: -776 bytes (bma=158 phl=128)
-21-05:38:26.226 [VRB] [HEAP-TEL] inbound: -3236 bytes (heap=136416 pin=121 bma=158 phl=130 lt=0 revr=0)
-21-05:38:26.230 [VRB] [HEAP-TEL] boundary: -784 bytes (bma=160 phl=130)
-21-05:38:26.235 [VRB] [HEAP-TEL] inbound: -1196 bytes (heap=135684 pin=122 bma=160 phl=132 lt=0 revr=0)
-21-05:38:26.239 [VRB] [HEAP-TEL] boundary: -792 bytes (bma=162 phl=132)
-21-05:38:26.244 [VRB] [HEAP-TEL] inbound: -1208 bytes (heap=134964 pin=123 bma=162 phl=134 lt=0 revr=0)
-21-05:38:26.248 [VRB] [HEAP-TEL] boundary: -772 bytes (bma=164 phl=134)
-21-05:38:26.253 [VRB] [HEAP-TEL] inbound: -1184 bytes (heap=134260 pin=124 bma=164 phl=136 lt=0 revr=0)
-21-05:38:26.257 [VRB] [HEAP-TEL] boundary: -772 bytes (bma=166 phl=136)
-21-05:38:26.262 [VRB] [HEAP-TEL] inbound: -1036 bytes (heap=133700 pin=125 bma=166 phl=138 lt=0 revr=0)
-21-05:38:26.266 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=168 phl=138)
-21-05:38:26.271 [VRB] [HEAP-TEL] inbound: -1184 bytes (heap=132996 pin=126 bma=168 phl=140 lt=0 revr=0)
-21-05:38:26.275 [VRB] [HEAP-TEL] boundary: -768 bytes (bma=170 phl=140)
-21-05:38:26.281 [VRB] [HEAP-TEL] inbound: -1336 bytes (heap=132172 pin=127 bma=170 phl=142 lt=0 revr=0)
-21-05:38:26.285 [VRB] [HEAP-TEL] boundary: -768 bytes (bma=172 phl=142)
-21-05:38:26.290 [VRB] [HEAP-TEL] inbound: -1052 bytes (heap=131596 pin=128 bma=172 phl=144 lt=0 revr=0)
-21-05:38:26.296 [VRB] [HEAP-TEL] boundary: -548 bytes (bma=174 phl=144)
-21-05:38:26.301 [VRB] [HEAP-TEL] inbound: -964 bytes (heap=130716 pin=129 bma=174 phl=146 lt=0 revr=0)
-21-05:38:26.305 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=176 phl=146)
-21-05:38:26.310 [VRB] [HEAP-TEL] inbound: -1176 bytes (heap=129992 pin=130 bma=176 phl=148 lt=0 revr=0)
-21-05:38:26.314 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=178 phl=148)
-21-05:38:26.319 [VRB] [HEAP-TEL] inbound: -1168 bytes (heap=129280 pin=131 bma=178 phl=150 lt=0 revr=0)
-21-05:38:26.323 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=180 phl=150)
-21-05:38:26.328 [VRB] [HEAP-TEL] inbound: -1164 bytes (heap=128572 pin=132 bma=180 phl=152 lt=0 revr=0)
-21-05:38:26.332 [VRB] [HEAP-TEL] boundary: -748 bytes (bma=182 phl=152)
-21-05:38:26.337 [VRB] [HEAP-TEL] inbound: -1160 bytes (heap=127868 pin=133 bma=182 phl=154 lt=0 revr=0)
-21-05:38:26.341 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=184 phl=154)
-21-05:38:26.346 [VRB] [HEAP-TEL] inbound: -1164 bytes (heap=127160 pin=134 bma=184 phl=156 lt=0 revr=0)
-21-05:38:26.350 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=186 phl=156)
-21-05:38:26.355 [VRB] [HEAP-TEL] inbound: -1168 bytes (heap=126448 pin=135 bma=186 phl=158 lt=0 revr=0)
-21-05:38:26.359 [VRB] [HEAP-TEL] boundary: -748 bytes (bma=188 phl=158)
-21-05:38:26.364 [VRB] [HEAP-TEL] inbound: -1020 bytes (heap=125884 pin=136 bma=188 phl=160 lt=0 revr=0)
-21-05:38:26.368 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=190 phl=160)
-21-05:38:26.373 [VRB] [HEAP-TEL] inbound: -1176 bytes (heap=125164 pin=137 bma=190 phl=162 lt=0 revr=0)
-21-05:38:26.377 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=192 phl=162)
-21-05:38:26.382 [VRB] [HEAP-TEL] inbound: -1172 bytes (heap=124448 pin=138 bma=192 phl=164 lt=0 revr=0)
-21-05:38:26.386 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=194 phl=164)
-21-05:38:26.391 [VRB] [HEAP-TEL] inbound: -1028 bytes (heap=123876 pin=139 bma=194 phl=166 lt=0 revr=0)
-21-05:38:26.402 [VRB] [HEAP-TEL] boundary: -772 bytes (bma=196 phl=166)
-21-05:38:26.407 [VRB] [HEAP-TEL] inbound: -1036 bytes (heap=123344 pin=141 bma=196 phl=168 lt=0 revr=0)
-21-05:38:26.411 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=198 phl=168)
-21-05:38:26.416 [VRB] [HEAP-TEL] inbound: -1020 bytes (heap=122784 pin=142 bma=198 phl=170 lt=0 revr=0)
-21-05:38:26.420 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=200 phl=170)
-21-05:38:26.425 [VRB] [HEAP-TEL] inbound: -1188 bytes (heap=122052 pin=143 bma=200 phl=172 lt=0 revr=0)
-21-05:38:26.429 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=202 phl=172)
-21-05:38:26.434 [VRB] [HEAP-TEL] inbound: -1016 bytes (heap=121496 pin=144 bma=202 phl=174 lt=0 revr=0)
-21-05:38:26.438 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=204 phl=174)
-21-05:38:26.443 [VRB] [HEAP-TEL] inbound: -1180 bytes (heap=120768 pin=145 bma=204 phl=176 lt=0 revr=0)
-21-05:38:26.447 [VRB] [HEAP-TEL] boundary: -768 bytes (bma=206 phl=176)
-21-05:38:26.452 [VRB] [HEAP-TEL] inbound: -1184 bytes (heap=120048 pin=146 bma=206 phl=178 lt=0 revr=0)
-21-05:38:26.457 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=208 phl=178)
-21-05:38:26.462 [VRB] [HEAP-TEL] inbound: -1188 bytes (heap=119328 pin=147 bma=208 phl=180 lt=0 revr=0)
-21-05:38:26.466 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=210 phl=180)
-21-05:38:26.471 [VRB] [HEAP-TEL] inbound: -1028 bytes (heap=118756 pin=148 bma=210 phl=182 lt=0 revr=0)
-21-05:38:26.475 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=212 phl=182)
-21-05:38:26.480 [VRB] [HEAP-TEL] inbound: -1020 bytes (heap=118188 pin=149 bma=212 phl=184 lt=0 revr=0)
-21-05:38:26.484 [VRB] [HEAP-TEL] boundary: -748 bytes (bma=214 phl=184)
-21-05:38:26.489 [VRB] [HEAP-TEL] inbound: -1012 bytes (heap=117628 pin=150 bma=214 phl=186 lt=0 revr=0)
-21-05:38:26.493 [VRB] [HEAP-TEL] boundary: -768 bytes (bma=216 phl=186)
-21-05:38:26.498 [VRB] [HEAP-TEL] inbound: -1032 bytes (heap=117048 pin=151 bma=216 phl=188 lt=0 revr=0)
-21-05:38:26.502 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=218 phl=188)
-21-05:38:26.507 [VRB] [HEAP-TEL] inbound: -1020 bytes (heap=116496 pin=152 bma=218 phl=190 lt=0 revr=0)
-21-05:38:26.511 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=220 phl=190)
-21-05:38:26.515 [VRB] [HEAP-TEL] inbound: -1032 bytes (heap=115916 pin=153 bma=220 phl=192 lt=0 revr=0)
-21-05:38:26.519 [VRB] [HEAP-TEL] boundary: -768 bytes (bma=222 phl=192)
-21-05:38:26.524 [VRB] [HEAP-TEL] inbound: -1032 bytes (heap=115348 pin=154 bma=222 phl=194 lt=0 revr=0)
-21-05:38:26.528 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=224 phl=194)
-21-05:38:26.533 [VRB] [HEAP-TEL] inbound: -1024 bytes (heap=114788 pin=155 bma=224 phl=196 lt=0 revr=0)
-21-05:38:26.537 [VRB] [HEAP-TEL] boundary: -748 bytes (bma=226 phl=196)
-21-05:38:26.542 [VRB] [HEAP-TEL] inbound: -1012 bytes (heap=114228 pin=156 bma=226 phl=198 lt=0 revr=0)
-21-05:38:26.546 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=228 phl=198)
-21-05:38:26.551 [VRB] [HEAP-TEL] inbound: -1016 bytes (heap=113664 pin=157 bma=228 phl=200 lt=0 revr=0)
-21-05:38:26.555 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=230 phl=200)
-21-05:38:26.560 [VRB] [HEAP-TEL] inbound: -1016 bytes (heap=113100 pin=158 bma=230 phl=202 lt=0 revr=0)
-21-05:38:26.564 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=232 phl=202)
-21-05:38:26.569 [VRB] [HEAP-TEL] inbound: -1016 bytes (heap=112536 pin=159 bma=232 phl=204 lt=0 revr=0)
-21-05:38:26.573 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=234 phl=204)
-21-05:38:26.578 [VRB] [HEAP-TEL] inbound: -1016 bytes (heap=111972 pin=160 bma=234 phl=206 lt=0 revr=0)
-21-05:38:26.582 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=236 phl=206)
-21-05:38:26.587 [VRB] [HEAP-TEL] inbound: -1172 bytes (heap=111344 pin=161 bma=236 phl=208 lt=0 revr=0)
-21-05:38:26.591 [VRB] [HEAP-TEL] boundary: -768 bytes (bma=238 phl=208)
-21-05:38:26.596 [VRB] [HEAP-TEL] inbound: -1032 bytes (heap=110764 pin=162 bma=238 phl=210 lt=0 revr=0)
-21-05:38:26.600 [VRB] [HEAP-TEL] boundary: -772 bytes (bma=240 phl=210)
-21-05:38:26.605 [VRB] [HEAP-TEL] inbound: -1036 bytes (heap=110184 pin=163 bma=240 phl=212 lt=0 revr=0)
-21-05:38:26.609 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=242 phl=212)
-21-05:38:26.614 [VRB] [HEAP-TEL] inbound: -1180 bytes (heap=109460 pin=164 bma=242 phl=214 lt=0 revr=0)
-21-05:38:26.622 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=244 phl=214)
-21-05:38:26.628 [VRB] [HEAP-TEL] inbound: -1176 bytes (heap=108740 pin=166 bma=244 phl=216 lt=0 revr=0)
-21-05:38:26.632 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=246 phl=216)
-21-05:38:26.637 [VRB] [HEAP-TEL] inbound: -1172 bytes (heap=108024 pin=167 bma=246 phl=218 lt=0 revr=0)
-21-05:38:26.641 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=248 phl=218)
-21-05:38:26.646 [VRB] [HEAP-TEL] inbound: -1016 bytes (heap=107464 pin=168 bma=248 phl=220 lt=0 revr=0)
-21-05:38:26.650 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=250 phl=220)
-21-05:38:26.655 [VRB] [HEAP-TEL] inbound: -1164 bytes (heap=106756 pin=169 bma=250 phl=222 lt=0 revr=0)
-21-05:38:26.659 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=252 phl=222)
-21-05:38:26.664 [VRB] [HEAP-TEL] inbound: -1168 bytes (heap=106044 pin=170 bma=252 phl=224 lt=0 revr=0)
-21-05:38:26.668 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=254 phl=224)
-21-05:38:26.673 [VRB] [HEAP-TEL] inbound: -1016 bytes (heap=105480 pin=171 bma=254 phl=226 lt=0 revr=0)
-21-05:38:26.683 [VRB] [HEAP-TEL] boundary: -748 bytes (bma=256 phl=226)
-21-05:38:26.688 [VRB] [HEAP-TEL] inbound: -1308 bytes (heap=104628 pin=173 bma=256 phl=228 lt=0 revr=0)
-21-05:38:26.699 [VRB] [HEAP-TEL] boundary: -616 bytes (bma=260 phl=230)
-21-05:38:26.704 [VRB] [HEAP-TEL] inbound: -1072 bytes (heap=107408 pin=175 bma=260 phl=232 lt=0 revr=0)
-21-05:38:26.710 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=262 phl=232)
-21-05:38:26.716 [VRB] [HEAP-TEL] inbound: -1172 bytes (heap=106772 pin=176 bma=262 phl=234 lt=0 revr=0)
-21-05:38:26.720 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=264 phl=234)
-21-05:38:26.725 [VRB] [HEAP-TEL] inbound: -1176 bytes (heap=106048 pin=177 bma=264 phl=236 lt=0 revr=0)
-21-05:38:26.729 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=266 phl=236)
-21-05:38:26.734 [VRB] [HEAP-TEL] inbound: -1172 bytes (heap=105332 pin=178 bma=266 phl=238 lt=0 revr=0)
-21-05:38:26.738 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=268 phl=238)
-21-05:38:26.743 [VRB] [HEAP-TEL] inbound: -1168 bytes (heap=104620 pin=179 bma=268 phl=240 lt=0 revr=0)
-21-05:38:26.747 [VRB] [HEAP-TEL] boundary: -772 bytes (bma=270 phl=240)
-21-05:38:26.752 [VRB] [HEAP-TEL] inbound: -1188 bytes (heap=103888 pin=180 bma=270 phl=242 lt=0 revr=0)
-21-05:38:26.758 [VRB] [HEAP-TEL] jobs: 40516 bytes (heap=145220)
-21-05:38:27.728 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=130 phl=100)
-21-05:38:27.732 [VRB] [HEAP-TEL] inbound: -1168 bytes (heap=143700 pin=181 bma=130 phl=102 lt=0 revr=0)
-21-05:38:27.763 [VRB] [HEAP-TEL] jobs: 580 bytes (heap=145092)
-21-05:38:27.898 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=130 phl=100)
-21-05:38:27.903 [VRB] [HEAP-TEL] inbound: -1020 bytes (heap=143720 pin=182 bma=130 phl=102 lt=0 revr=0)
-21-05:38:28.015 [VRB] [HEAP-TEL] jobs: 588 bytes (heap=145120)
-21-05:38:28.549 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=130 phl=100)
-21-05:38:28.553 [VRB] [HEAP-TEL] inbound: -1044 bytes (heap=143724 pin=183 bma=130 phl=102 lt=0 revr=0)
-21-05:38:28.558 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=132 phl=102)
-21-05:38:28.563 [VRB] [HEAP-TEL] inbound: -1176 bytes (heap=143008 pin=184 bma=132 phl=104 lt=0 revr=0)
-21-05:38:28.572 [VRB] [HEAP-TEL] boundary: -772 bytes (bma=134 phl=104)
-21-05:38:28.576 [VRB] [HEAP-TEL] inbound: -1060 bytes (heap=142408 pin=185 bma=134 phl=106 lt=0 revr=0)
-21-05:38:28.688 [VRB] [HEAP-TEL] boundary: -800 bytes (bma=136 phl=106)
-21-05:38:28.693 [VRB] [HEAP-TEL] inbound: -1080 bytes (heap=141792 pin=186 bma=136 phl=108 lt=0 revr=0)
-21-05:38:28.768 [VRB] [HEAP-TEL] jobs: 2300 bytes (heap=144908)
-21-05:38:28.861 [VRB] [HEAP-TEL] boundary: -780 bytes (bma=130 phl=100)
-21-05:38:28.866 [VRB] [HEAP-TEL] inbound: -848 bytes (heap=143500 pin=187 bma=130 phl=102 lt=0 revr=0)
-21-05:38:29.031 [VRB] [HEAP-TEL] jobs: 568 bytes (heap=144884)
-21-05:38:29.572 [VRB] [HEAP-TEL] boundary: -784 bytes (bma=130 phl=100)
-21-05:38:29.578 [VRB] [HEAP-TEL] inbound: -1224 bytes (heap=143516 pin=188 bma=130 phl=102 lt=0 revr=0)
-21-05:38:29.582 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=132 phl=102)
-21-05:38:29.587 [VRB] [HEAP-TEL] inbound: -1200 bytes (heap=142780 pin=189 bma=132 phl=104 lt=0 revr=0)
-21-05:38:29.673 [VRB] [HEAP-TEL] boundary: -772 bytes (bma=134 phl=104)
-21-05:38:29.677 [VRB] [HEAP-TEL] inbound: -1192 bytes (heap=142052 pin=190 bma=134 phl=106 lt=0 revr=0)
-21-05:38:29.780 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=136 phl=106)
-21-05:38:29.786 [VRB] [HEAP-TEL] inbound: -1176 bytes (heap=141336 pin=191 bma=136 phl=108 lt=0 revr=0)
-21-05:38:29.798 [VRB] [HEAP-TEL] jobs: 2284 bytes (heap=144228)
-21-05:38:30.288 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=130 phl=100)
-21-05:38:30.293 [VRB] [HEAP-TEL] inbound: -1188 bytes (heap=142896 pin=192 bma=130 phl=102 lt=0 revr=0)
-21-05:38:30.314 [VRB] [HEAP-TEL] jobs: 564 bytes (heap=144064)
-21-05:38:30.698 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=130 phl=100)
-21-05:38:30.702 [VRB] [HEAP-TEL] inbound: -1028 bytes (heap=142660 pin=196 bma=130 phl=102 lt=0 revr=0)
-21-05:38:30.833 [VRB] [HEAP-TEL] jobs: 572 bytes (heap=144064)
-21-05:38:33.173 [VRB] [HEAP-TEL] boundary: -748 bytes (bma=130 phl=100)
-21-05:38:33.179 [VRB] [HEAP-TEL] inbound: -1164 bytes (heap=142704 pin=199 bma=130 phl=102 lt=0 revr=0)
-21-05:38:33.183 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=132 phl=102)
-21-05:38:33.188 [VRB] [HEAP-TEL] inbound: -1024 bytes (heap=142136 pin=200 bma=132 phl=104 lt=0 revr=0)
-21-05:38:33.192 [VRB] [HEAP-TEL] boundary: -768 bytes (bma=134 phl=104)
-21-05:38:33.197 [VRB] [HEAP-TEL] inbound: -1044 bytes (heap=141600 pin=201 bma=134 phl=106 lt=0 revr=0)
-21-05:38:33.209 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=136 phl=106)
-21-05:38:33.214 [VRB] [HEAP-TEL] inbound: -1028 bytes (heap=140808 pin=202 bma=136 phl=108 lt=0 revr=0)
-21-05:38:33.285 [VRB] [HEAP-TEL] boundary: -768 bytes (bma=138 phl=108)
-21-05:38:33.289 [VRB] [HEAP-TEL] inbound: -1048 bytes (heap=140204 pin=203 bma=138 phl=110 lt=0 revr=0)
-21-05:38:33.387 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=140 phl=110)
-21-05:38:33.393 [VRB] [HEAP-TEL] inbound: -1232 bytes (heap=139440 pin=204 bma=140 phl=112 lt=0 revr=0)
-21-05:38:33.397 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=142 phl=112)
-21-05:38:33.402 [VRB] [HEAP-TEL] inbound: -1028 bytes (heap=138924 pin=205 bma=142 phl=114 lt=0 revr=0)
-21-05:38:33.413 [VRB] [HEAP-TEL] jobs: 3972 bytes (heap=143740)
-21-05:38:33.586 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=130 phl=100)
-21-05:38:33.592 [VRB] [HEAP-TEL] inbound: -828 bytes (heap=142560 pin=206 bma=130 phl=102 lt=0 revr=0)
-21-05:38:33.596 [VRB] [HEAP-TEL] boundary: -768 bytes (bma=132 phl=102)
-21-05:38:33.601 [VRB] [HEAP-TEL] inbound: -1044 bytes (heap=141976 pin=207 bma=132 phl=104 lt=0 revr=0)
-21-05:38:33.680 [VRB] [HEAP-TEL] jobs: 1120 bytes (heap=143700)
-21-05:38:34.717 [VRB] [HEAP-TEL] boundary: -772 bytes (bma=130 phl=100)
-21-05:38:34.721 [VRB] [HEAP-TEL] inbound: -1184 bytes (heap=142152 pin=209 bma=130 phl=102 lt=0 revr=0)
-21-05:38:34.724 [VRB] [HEAP-TEL] jobs: 556 bytes (heap=143536)
-21-05:38:34.795 [VRB] [HEAP-TEL] boundary: -568 bytes (bma=130 phl=100)
-21-05:38:34.799 [VRB] [HEAP-TEL] inbound: -836 bytes (heap=142128 pin=210 bma=130 phl=102 lt=0 revr=0)
-21-05:38:34.975 [VRB] [HEAP-TEL] jobs: 576 bytes (heap=143548)
-21-05:38:35.111 [VRB] [HEAP-TEL] boundary: -788 bytes (bma=130 phl=100)
-21-05:38:35.115 [VRB] [HEAP-TEL] inbound: -1052 bytes (heap=142120 pin=211 bma=130 phl=102 lt=0 revr=0)
-21-05:38:35.232 [VRB] [HEAP-TEL] jobs: 572 bytes (heap=143556)
-21-05:38:35.613 [VRB] [HEAP-TEL] boundary: -772 bytes (bma=130 phl=100)
-21-05:38:35.619 [VRB] [HEAP-TEL] inbound: -1200 bytes (heap=142004 pin=212 bma=130 phl=102 lt=0 revr=0)
-21-05:38:35.681 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=132 phl=102)
-21-05:38:35.685 [VRB] [HEAP-TEL] inbound: -1024 bytes (heap=141440 pin=213 bma=132 phl=104 lt=0 revr=0)
-21-05:38:35.750 [VRB] [HEAP-TEL] jobs: 1160 bytes (heap=143412)
-21-05:38:37.363 [VRB] [HEAP-TEL] boundary: -780 bytes (bma=130 phl=100)
-21-05:38:37.367 [VRB] [HEAP-TEL] inbound: -1052 bytes (heap=142216 pin=214 bma=130 phl=102 lt=0 revr=0)
-21-05:38:38.074 [VRB] [HEAP-TEL] boundary: -780 bytes (bma=132 phl=102)
-21-05:38:38.078 [VRB] [HEAP-TEL] inbound: -1056 bytes (heap=141396 pin=216 bma=132 phl=104 lt=0 revr=0)
-21-05:38:38.334 [VRB] [HEAP-TEL] jobs: 1140 bytes (heap=143372)
-21-05:38:38.591 [VRB] [HEAP-TEL] boundary: -780 bytes (bma=130 phl=100)
-21-05:38:38.596 [VRB] [HEAP-TEL] inbound: -1052 bytes (heap=141728 pin=217 bma=130 phl=102 lt=0 revr=0)
-21-05:38:38.600 [VRB] [HEAP-TEL] boundary: -572 bytes (bma=132 phl=102)
-21-05:38:38.605 [VRB] [HEAP-TEL] inbound: -836 bytes (heap=141368 pin=218 bma=132 phl=104 lt=0 revr=0)
-21-05:38:38.712 [VRB] mem: 143376 (48%) [-64456] flash: 3477504 (98%) [0] paths: 3 dsts: 5 revr: 0 annc: 0 held: 0
-21-05:38:38.714 [VRB] preqs: 151 dpreqs: 0 ppreqs: 0 dprt: 32 cdsts: 2 chshs: 2
-21-05:38:38.715 [VRB] phl: 100 rcp: 0 lt: 0 pl: 0 al: 0 tun: 0
-21-05:38:38.716 [VRB] bla: 0 bma: 128
-21-05:38:38.717 [VRB] pin: 218 pout: 202 padd: 0 dpr: 1 ikd: 0 ia: 0
-
-21-05:38:38.718 [VRB] [HEAP-TEL] jobs: 1048 bytes (heap=143280)
-21-05:38:38.722 [VRB] [HEAP-TEL] boundary: -772 bytes (bma=130 phl=100)
-21-05:38:38.727 [VRB] [HEAP-TEL] inbound: -1048 bytes (heap=142184 pin=219 bma=130 phl=102 lt=0 revr=0)
-21-05:38:38.732 [VRB] [HEAP-TEL] boundary: -768 bytes (bma=132 phl=102)
-21-05:38:38.737 [VRB] [HEAP-TEL] inbound: -1192 bytes (heap=141452 pin=220 bma=132 phl=104 lt=0 revr=0)
-21-05:38:38.792 [VRB] [HEAP-TEL] boundary: -828 bytes (bma=134 phl=104)
-21-05:38:38.797 [VRB] [HEAP-TEL] inbound: -860 bytes (heap=140632 pin=221 bma=134 phl=106 lt=0 revr=0)
-21-05:38:38.801 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=136 phl=106)
-21-05:38:38.806 [VRB] [HEAP-TEL] inbound: -1028 bytes (heap=140104 pin=222 bma=136 phl=108 lt=0 revr=0)
-21-05:38:38.900 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=138 phl=108)
-21-05:38:38.904 [VRB] [HEAP-TEL] inbound: -1040 bytes (heap=139508 pin=223 bma=138 phl=110 lt=0 revr=0)
-21-05:38:38.949 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=140 phl=110)
-21-05:38:38.953 [VRB] [HEAP-TEL] inbound: -1032 bytes (heap=138948 pin=224 bma=140 phl=112 lt=0 revr=0)
-21-05:38:38.970 [VRB] [HEAP-TEL] jobs: 3444 bytes (heap=143232)
-21-05:38:39.117 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=130 phl=100)
-21-05:38:39.121 [VRB] [HEAP-TEL] inbound: -1024 bytes (heap=141848 pin=225 bma=130 phl=102 lt=0 revr=0)
-21-05:38:39.222 [VRB] [HEAP-TEL] jobs: 572 bytes (heap=143240)
-21-05:38:39.816 [VRB] [HEAP-TEL] boundary: -768 bytes (bma=130 phl=100)
-21-05:38:39.821 [VRB] [HEAP-TEL] inbound: -1192 bytes (heap=141688 pin=226 bma=130 phl=102 lt=0 revr=0)
-21-05:38:39.977 [VRB] [HEAP-TEL] jobs: 556 bytes (heap=143064)
-21-05:38:41.769 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=130 phl=100)
-21-05:38:41.774 [VRB] [HEAP-TEL] inbound: -1172 bytes (heap=141540 pin=227 bma=130 phl=102 lt=0 revr=0)
-21-05:38:41.776 [VRB] [HEAP-TEL] jobs: 568 bytes (heap=142920)
-21-05:38:43.193 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=130 phl=100)
-21-05:38:43.198 [VRB] [HEAP-TEL] inbound: -1180 bytes (heap=141544 pin=228 bma=130 phl=102 lt=0 revr=0)
-21-05:38:43.202 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=132 phl=102)
-21-05:38:43.207 [VRB] [HEAP-TEL] inbound: -1164 bytes (heap=140840 pin=229 bma=132 phl=104 lt=0 revr=0)
-21-05:38:43.213 [VRB] [HEAP-TEL] boundary: -552 bytes (bma=134 phl=104)
-21-05:38:43.218 [VRB] [HEAP-TEL] inbound: -976 bytes (heap=140124 pin=230 bma=134 phl=106 lt=0 revr=0)
-21-05:38:43.222 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=136 phl=106)
-21-05:38:43.227 [VRB] [HEAP-TEL] inbound: -1176 bytes (heap=139452 pin=231 bma=136 phl=108 lt=0 revr=0)
-21-05:38:43.324 [VRB] [HEAP-TEL] jobs: 2260 bytes (heap=142316)
-21-05:38:43.398 [VRB] [HEAP-TEL] boundary: -660 bytes (bma=130 phl=100)
-21-05:38:43.402 [VRB] [HEAP-TEL] inbound: -1088 bytes (heap=140784 pin=232 bma=130 phl=102 lt=0 revr=0)
-21-05:38:43.439 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=132 phl=102)
-21-05:38:43.444 [VRB] [HEAP-TEL] inbound: -1184 bytes (heap=140060 pin=233 bma=132 phl=104 lt=0 revr=0)
-21-05:38:43.577 [VRB] [HEAP-TEL] jobs: 1132 bytes (heap=142008)
-21-05:38:43.613 [VRB] [HEAP-TEL] boundary: -776 bytes (bma=130 phl=100)
-21-05:38:43.617 [VRB] [HEAP-TEL] inbound: -1196 bytes (heap=140460 pin=234 bma=130 phl=102 lt=0 revr=0)
-21-05:38:43.712 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=132 phl=102)
-21-05:38:43.716 [VRB] [HEAP-TEL] inbound: -1220 bytes (heap=139704 pin=235 bma=132 phl=104 lt=0 revr=0)
-21-05:38:43.829 [VRB] [HEAP-TEL] jobs: 1132 bytes (heap=141652)
-21-05:38:43.917 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=130 phl=100)
-21-05:38:43.922 [VRB] [HEAP-TEL] inbound: -1052 bytes (heap=140248 pin=236 bma=130 phl=102 lt=0 revr=0)
-21-05:38:44.080 [VRB] [HEAP-TEL] jobs: 576 bytes (heap=141640)
-21-05:38:44.131 [VRB] [HEAP-TEL] boundary: -768 bytes (bma=130 phl=100)
-21-05:38:44.136 [VRB] [HEAP-TEL] inbound: -1208 bytes (heap=140080 pin=237 bma=130 phl=102 lt=0 revr=0)
-21-05:38:45.650 [VRB] [HEAP-TEL] boundary: -768 bytes (bma=132 phl=102)
-21-05:38:45.655 [VRB] [HEAP-TEL] inbound: -1188 bytes (heap=139360 pin=240 bma=132 phl=104 lt=0 revr=0)
-21-05:38:45.864 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=134 phl=104)
-21-05:38:45.868 [VRB] [HEAP-TEL] inbound: -1180 bytes (heap=138636 pin=241 bma=134 phl=106 lt=0 revr=0)
-21-05:38:45.871 [VRB] [HEAP-TEL] jobs: 1716 bytes (heap=141160)
-21-05:38:46.551 [VRB] [Advertise] Building discovery announce
-21-05:38:46.553 [VRB] [Advertise] Generating workblock + stamp (cost=14, this may take a few seconds)
-21-05:39:25.861 [VRB] [Advertise] Sending interface discovery announce, payload size: 136 bytes
-21-05:39:25.919 [VRB] [LoRa] TX 303 bytes
-21-05:39:25.929 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=130 phl=101)
-21-05:39:25.934 [VRB] [HEAP-TEL] inbound: -1188 bytes (heap=135836 pin=243 bma=130 phl=103 lt=0 revr=0)
-21-05:39:25.938 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=132 phl=103)
-21-05:39:25.943 [VRB] [HEAP-TEL] inbound: -1188 bytes (heap=135108 pin=244 bma=132 phl=105 lt=0 revr=0)
-21-05:39:25.947 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=134 phl=105)
-21-05:39:25.952 [VRB] [HEAP-TEL] inbound: -1180 bytes (heap=134388 pin=245 bma=134 phl=107 lt=0 revr=0)
-21-05:39:25.956 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=136 phl=107)
-21-05:39:25.961 [VRB] [HEAP-TEL] inbound: -1188 bytes (heap=133660 pin=246 bma=136 phl=109 lt=0 revr=0)
-21-05:39:25.965 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=138 phl=109)
-21-05:39:25.970 [VRB] [HEAP-TEL] inbound: -1184 bytes (heap=132936 pin=247 bma=138 phl=111 lt=0 revr=0)
-21-05:39:25.974 [VRB] [HEAP-TEL] boundary: -768 bytes (bma=140 phl=111)
-21-05:39:25.979 [VRB] [HEAP-TEL] inbound: -1324 bytes (heap=132072 pin=248 bma=140 phl=113 lt=0 revr=0)
-[TcpIF] Connecting to rns.beleth.net:4242 (cached IP)...
-[TcpIF] Cached IP failed, retrying with DNS
-[TcpIF] Connecting to rns.beleth.net:4242 (DNS)...
-[TcpIF] Resolved rns.beleth.net -> 129.213.74.184
-[TcpIF] Failed to connect to rns.beleth.net:4242 (attempt 3, next retry in 80s)
-21-05:39:38.022 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=142 phl=113)
-21-05:39:38.026 [VRB] [HEAP-TEL] inbound: -1192 bytes (heap=134708 pin=249 bma=142 phl=115 lt=0 revr=0)
-21-05:39:38.028 [VRB] [HEAP-TEL] jobs: 4144 bytes (heap=139676)
-[TcpIF] Client 0 disconnected (heap: 139676 -> 141480, delta: +1804)
-[TcpIF] Connecting to rmap.world:4242 (cached IP)...
-[TcpIF] Connected to backbone at rmap.world:4242
-21-05:39:38.283 [VRB] [LoRa] TXSTART 303 bytes
-[Boundary] TXCFG f=914875000 sf=10 bw=4 cr=1 ldro=0 pre=18 hdr=0 len=255 crc=1 iq=0 txp=19
-[Boundary] TXDONE irq=0001 timeout=0 pa=1
-[Boundary] TXCFG f=914875000 sf=10 bw=4 cr=1 ldro=0 pre=18 hdr=0 len=50 crc=1 iq=0 txp=19
-[Boundary] TXDONE irq=0001 timeout=0 pa=1
-21-05:39:41.576 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=130 phl=100)
-21-05:39:41.580 [VRB] [HEAP-TEL] inbound: -1044 bytes (heap=138000 pin=250 bma=130 phl=102 lt=0 revr=0)
-21-05:39:41.585 [VRB] [HEAP-TEL] boundary: -768 bytes (bma=132 phl=102)
-21-05:39:41.590 [VRB] [HEAP-TEL] inbound: -1052 bytes (heap=137408 pin=251 bma=132 phl=104 lt=0 revr=0)
-21-05:39:41.594 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=134 phl=104)
-21-05:39:41.599 [VRB] [HEAP-TEL] inbound: -1184 bytes (heap=136684 pin=252 bma=134 phl=106 lt=0 revr=0)
-21-05:39:41.603 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=136 phl=106)
-21-05:39:41.608 [VRB] [HEAP-TEL] inbound: -1024 bytes (heap=136120 pin=253 bma=136 phl=108 lt=0 revr=0)
-21-05:39:41.612 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=138 phl=108)
-21-05:39:41.617 [VRB] [HEAP-TEL] inbound: -1180 bytes (heap=135400 pin=254 bma=138 phl=110 lt=0 revr=0)
-21-05:39:41.621 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=140 phl=110)
-21-05:39:41.626 [VRB] [HEAP-TEL] inbound: -1188 bytes (heap=134676 pin=255 bma=140 phl=112 lt=0 revr=0)
-21-05:39:41.742 [VRB] mem: 138956 (47%) [-4420] flash: 3477504 (98%) [0] paths: 3 dsts: 5 revr: 0 annc: 0 held: 0
-21-05:39:41.744 [VRB] preqs: 175 dpreqs: 0 ppreqs: 0 dprt: 32 cdsts: 2 chshs: 2
-21-05:39:41.745 [VRB] phl: 100 rcp: 0 lt: 0 pl: 0 al: 0 tun: 0
-21-05:39:41.746 [VRB] bla: 0 bma: 128
-21-05:39:41.747 [VRB] pin: 255 pout: 237 padd: 0 dpr: 2 ikd: 0 ia: 0
-
-21-05:39:41.748 [VRB] [HEAP-TEL] jobs: 3464 bytes (heap=138956)
-21-05:39:41.752 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=130 phl=100)
-21-05:39:41.757 [VRB] [HEAP-TEL] inbound: -1028 bytes (heap=137832 pin=256 bma=130 phl=102 lt=0 revr=0)
-21-05:39:42.000 [VRB] [HEAP-TEL] jobs: 576 bytes (heap=139012)
-21-05:39:42.686 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=130 phl=100)
-21-05:39:42.691 [VRB] [HEAP-TEL] inbound: -1184 bytes (heap=137476 pin=257 bma=130 phl=102 lt=0 revr=0)
-21-05:39:42.696 [VRB] [HEAP-TEL] boundary: -776 bytes (bma=132 phl=102)
-21-05:39:42.701 [VRB] [HEAP-TEL] inbound: -1204 bytes (heap=136732 pin=258 bma=132 phl=104 lt=0 revr=0)
-21-05:39:42.705 [VRB] [HEAP-TEL] boundary: -768 bytes (bma=134 phl=104)
-21-05:39:42.710 [VRB] [HEAP-TEL] inbound: -1192 bytes (heap=136000 pin=259 bma=134 phl=106 lt=0 revr=0)
-21-05:39:42.714 [VRB] [HEAP-TEL] boundary: -788 bytes (bma=136 phl=106)
-21-05:39:42.719 [VRB] [HEAP-TEL] inbound: -1204 bytes (heap=135268 pin=260 bma=136 phl=108 lt=0 revr=0)
-21-05:39:42.723 [VRB] [HEAP-TEL] boundary: -768 bytes (bma=138 phl=108)
-21-05:39:42.728 [VRB] [HEAP-TEL] inbound: -1192 bytes (heap=134548 pin=261 bma=138 phl=110 lt=0 revr=0)
-21-05:39:42.732 [VRB] [HEAP-TEL] boundary: -776 bytes (bma=140 phl=110)
-21-05:39:42.736 [VRB] [HEAP-TEL] inbound: -1216 bytes (heap=133792 pin=262 bma=140 phl=112 lt=0 revr=0)
-21-05:39:43.201 [VRB] [HEAP-TEL] boundary: -572 bytes (bma=142 phl=112)
-21-05:39:43.206 [VRB] [HEAP-TEL] inbound: -996 bytes (heap=133060 pin=264 bma=142 phl=114 lt=0 revr=0)
-21-05:39:43.210 [VRB] [HEAP-TEL] boundary: -776 bytes (bma=144 phl=114)
-21-05:39:43.215 [VRB] [HEAP-TEL] inbound: -1204 bytes (heap=132328 pin=265 bma=144 phl=116 lt=0 revr=0)
-21-05:39:43.219 [VRB] [HEAP-TEL] boundary: -792 bytes (bma=146 phl=116)
-21-05:39:43.224 [VRB] [HEAP-TEL] inbound: -1208 bytes (heap=131604 pin=266 bma=146 phl=118 lt=0 revr=0)
-21-05:39:43.228 [VRB] [HEAP-TEL] boundary: -792 bytes (bma=148 phl=118)
-21-05:39:43.233 [VRB] [HEAP-TEL] inbound: -1220 bytes (heap=130868 pin=267 bma=148 phl=120 lt=0 revr=0)
-21-05:39:43.237 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=150 phl=120)
-21-05:39:43.242 [VRB] [HEAP-TEL] inbound: -1184 bytes (heap=130156 pin=268 bma=150 phl=122 lt=0 revr=0)
-21-05:39:43.256 [VRB] [HEAP-TEL] jobs: 6324 bytes (heap=137292)
-21-05:39:43.405 [VRB] [HEAP-TEL] boundary: -536 bytes (bma=130 phl=100)
-21-05:39:43.410 [VRB] [HEAP-TEL] inbound: -952 bytes (heap=135772 pin=269 bma=130 phl=102 lt=0 revr=0)
-21-05:39:43.415 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=132 phl=102)
-21-05:39:43.420 [VRB] [HEAP-TEL] inbound: -1184 bytes (heap=135048 pin=270 bma=132 phl=104 lt=0 revr=0)
-21-05:39:43.513 [VRB] [HEAP-TEL] jobs: 1160 bytes (heap=137020)
-21-05:39:43.609 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=130 phl=100)
-21-05:39:43.613 [VRB] [HEAP-TEL] inbound: -1184 bytes (heap=135484 pin=271 bma=130 phl=102 lt=0 revr=0)
-21-05:39:43.688 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=132 phl=102)
-21-05:39:43.692 [VRB] [HEAP-TEL] inbound: -1036 bytes (heap=134908 pin=272 bma=132 phl=104 lt=0 revr=0)
-21-05:39:43.764 [VRB] [HEAP-TEL] jobs: 1148 bytes (heap=136868)
-21-05:39:43.933 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=130 phl=100)
-21-05:39:43.938 [VRB] [HEAP-TEL] inbound: -1184 bytes (heap=135332 pin=274 bma=130 phl=102 lt=0 revr=0)
-21-05:39:43.959 [VRB] [HEAP-TEL] boundary: -788 bytes (bma=132 phl=102)
-21-05:39:43.963 [VRB] [HEAP-TEL] inbound: -1224 bytes (heap=134776 pin=275 bma=132 phl=104 lt=0 revr=0)
-21-05:39:44.030 [VRB] [HEAP-TEL] jobs: 1148 bytes (heap=136528)
-21-05:39:44.124 [VRB] [HEAP-TEL] boundary: -780 bytes (bma=130 phl=100)
-21-05:39:44.130 [VRB] [HEAP-TEL] inbound: -1200 bytes (heap=135184 pin=276 bma=130 phl=102 lt=0 revr=0)
-21-05:39:44.163 [VRB] [HEAP-TEL] boundary: -772 bytes (bma=132 phl=102)
-21-05:39:44.167 [VRB] [HEAP-TEL] inbound: -1208 bytes (heap=134228 pin=277 bma=132 phl=104 lt=0 revr=0)
-21-05:39:44.282 [VRB] [HEAP-TEL] jobs: 1132 bytes (heap=136184)
-21-05:39:44.327 [VRB] [HEAP-TEL] boundary: -792 bytes (bma=130 phl=100)
-21-05:39:44.331 [VRB] [HEAP-TEL] inbound: -1228 bytes (heap=134604 pin=278 bma=130 phl=102 lt=0 revr=0)
-21-05:39:45.065 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=132 phl=102)
-21-05:39:45.070 [VRB] [HEAP-TEL] inbound: -1188 bytes (heap=133880 pin=280 bma=132 phl=104 lt=0 revr=0)
-21-05:39:45.072 [VRB] [HEAP-TEL] jobs: 1156 bytes (heap=135852)
-21-05:39:45.982 [VRB] [HEAP-TEL] boundary: -772 bytes (bma=130 phl=100)
-21-05:39:45.987 [VRB] [HEAP-TEL] inbound: -1060 bytes (heap=134288 pin=281 bma=130 phl=102 lt=0 revr=0)
-21-05:39:46.095 [VRB] [HEAP-TEL] jobs: 588 bytes (heap=135688)
-21-05:39:47.602 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=130 phl=100)
-21-05:39:47.608 [VRB] [HEAP-TEL] inbound: -1188 bytes (heap=134356 pin=282 bma=130 phl=102 lt=0 revr=0)
-21-05:39:47.644 [VRB] [HEAP-TEL] jobs: 564 bytes (heap=135524)
-21-05:39:48.421 [VRB] [HEAP-TEL] boundary: -768 bytes (bma=130 phl=100)
-21-05:39:48.426 [VRB] [HEAP-TEL] inbound: -1040 bytes (heap=134132 pin=283 bma=130 phl=102 lt=0 revr=0)
-21-05:39:48.676 [VRB] [HEAP-TEL] jobs: 580 bytes (heap=135524)
-21-05:39:49.042 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=130 phl=100)
-21-05:39:49.046 [VRB] [HEAP-TEL] inbound: -1180 bytes (heap=133992 pin=284 bma=130 phl=102 lt=0 revr=0)
-21-05:39:49.087 [VRB] [HEAP-TEL] boundary: -788 bytes (bma=132 phl=102)
-21-05:39:49.091 [VRB] [HEAP-TEL] inbound: -1212 bytes (heap=133240 pin=285 bma=132 phl=104 lt=0 revr=0)
-21-05:39:49.193 [VRB] [HEAP-TEL] jobs: 1132 bytes (heap=135188)
-21-05:39:49.370 [VRB] [HEAP-TEL] boundary: -544 bytes (bma=130 phl=100)
-21-05:39:49.374 [VRB] [HEAP-TEL] inbound: -820 bytes (heap=133800 pin=286 bma=130 phl=102 lt=0 revr=0)
-21-05:39:49.379 [VRB] [HEAP-TEL] boundary: -772 bytes (bma=132 phl=102)
-21-05:39:49.384 [VRB] [HEAP-TEL] inbound: -1192 bytes (heap=133068 pin=287 bma=132 phl=104 lt=0 revr=0)
-21-05:39:49.445 [VRB] [HEAP-TEL] jobs: 1160 bytes (heap=135040)
-21-05:39:49.548 [VRB] [HEAP-TEL] boundary: -772 bytes (bma=130 phl=100)
-21-05:39:49.552 [VRB] [HEAP-TEL] inbound: -1184 bytes (heap=133492 pin=288 bma=130 phl=102 lt=0 revr=0)
-21-05:39:49.587 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=132 phl=102)
-21-05:39:49.591 [VRB] [HEAP-TEL] inbound: -1188 bytes (heap=132772 pin=289 bma=132 phl=104 lt=0 revr=0)
-21-05:39:49.711 [VRB] [HEAP-TEL] jobs: 1172 bytes (heap=134776)
-21-05:39:49.754 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=130 phl=100)
-21-05:39:49.759 [VRB] [HEAP-TEL] inbound: -1200 bytes (heap=133224 pin=290 bma=130 phl=102 lt=0 revr=0)
-21-05:39:49.781 [VRB] [HEAP-TEL] boundary: -768 bytes (bma=132 phl=102)
-21-05:39:49.786 [VRB] [HEAP-TEL] inbound: -1196 bytes (heap=132696 pin=291 bma=132 phl=104 lt=0 revr=0)
-21-05:39:49.958 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=134 phl=104)
-21-05:39:49.964 [VRB] [HEAP-TEL] inbound: -1180 bytes (heap=131748 pin=292 bma=134 phl=106 lt=0 revr=0)
-21-05:39:49.966 [VRB] [HEAP-TEL] jobs: 1708 bytes (heap=134288)
-21-05:39:49.973 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=130 phl=100)
-21-05:39:49.978 [VRB] [HEAP-TEL] inbound: -1028 bytes (heap=132904 pin=293 bma=130 phl=102 lt=0 revr=0)
-21-05:39:50.171 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=132 phl=102)
-21-05:39:50.175 [VRB] [HEAP-TEL] inbound: -1040 bytes (heap=132536 pin=294 bma=132 phl=104 lt=0 revr=0)
-21-05:39:50.231 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=134 phl=104)
-21-05:39:50.236 [VRB] [HEAP-TEL] inbound: -1032 bytes (heap=131744 pin=295 bma=134 phl=106 lt=0 revr=0)
-21-05:39:50.239 [VRB] [HEAP-TEL] jobs: 1712 bytes (heap=134280)
-21-05:39:50.404 [VRB] [HEAP-TEL] boundary: -776 bytes (bma=130 phl=100)
-21-05:39:50.409 [VRB] [HEAP-TEL] inbound: -1244 bytes (heap=132684 pin=296 bma=130 phl=102 lt=0 revr=0)
-21-05:39:50.413 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=132 phl=102)
-21-05:39:50.418 [VRB] [HEAP-TEL] inbound: -1040 bytes (heap=132152 pin=297 bma=132 phl=104 lt=0 revr=0)
-21-05:39:50.490 [VRB] [HEAP-TEL] jobs: 1144 bytes (heap=134108)
-21-05:39:50.577 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=130 phl=100)
-21-05:39:50.581 [VRB] [HEAP-TEL] inbound: -1176 bytes (heap=132572 pin=298 bma=130 phl=102 lt=0 revr=0)
-21-05:39:50.750 [VRB] [HEAP-TEL] boundary: -776 bytes (bma=132 phl=102)
-21-05:39:50.755 [VRB] [HEAP-TEL] inbound: -1192 bytes (heap=131840 pin=299 bma=132 phl=104 lt=0 revr=0)
-21-05:39:50.757 [VRB] [HEAP-TEL] jobs: 1140 bytes (heap=133800)
-21-05:39:50.880 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=130 phl=100)
-21-05:39:50.884 [VRB] [HEAP-TEL] inbound: -1036 bytes (heap=132620 pin=300 bma=130 phl=102 lt=0 revr=0)
-21-05:39:51.009 [VRB] [HEAP-TEL] jobs: 584 bytes (heap=133808)
-21-05:39:51.095 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=130 phl=100)
-21-05:39:51.100 [VRB] [HEAP-TEL] inbound: -1180 bytes (heap=132276 pin=301 bma=130 phl=102 lt=0 revr=0)
-21-05:39:51.265 [VRB] [HEAP-TEL] jobs: 568 bytes (heap=133656)
-21-05:39:52.006 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=130 phl=100)
-21-05:39:52.011 [VRB] [HEAP-TEL] inbound: -1040 bytes (heap=132264 pin=302 bma=130 phl=102 lt=0 revr=0)
-21-05:39:52.032 [VRB] [HEAP-TEL] jobs: 572 bytes (heap=133648)
-21-05:39:52.214 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=130 phl=100)
-21-05:39:52.220 [VRB] [HEAP-TEL] inbound: -1188 bytes (heap=132316 pin=303 bma=130 phl=102 lt=0 revr=0)
-21-05:39:52.298 [VRB] [HEAP-TEL] jobs: 568 bytes (heap=133488)
-21-05:39:52.722 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=130 phl=100)
-21-05:39:52.727 [VRB] [HEAP-TEL] inbound: -1188 bytes (heap=132156 pin=304 bma=130 phl=102 lt=0 revr=0)
-21-05:39:52.816 [VRB] [HEAP-TEL] jobs: 568 bytes (heap=133188)
-21-05:39:52.829 [VRB] [HEAP-TEL] boundary: -544 bytes (bma=130 phl=100)
-21-05:39:52.834 [VRB] [HEAP-TEL] inbound: -968 bytes (heap=132008 pin=305 bma=130 phl=102 lt=0 revr=0)
-21-05:39:53.067 [VRB] [HEAP-TEL] jobs: 572 bytes (heap=133184)
-21-05:39:53.235 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=130 phl=100)
-21-05:39:53.241 [VRB] [HEAP-TEL] inbound: -1032 bytes (heap=131768 pin=306 bma=130 phl=102 lt=0 revr=0)
-21-05:39:53.332 [VRB] [HEAP-TEL] jobs: 572 bytes (heap=133188)
-21-05:39:54.056 [VRB] [HEAP-TEL] boundary: -780 bytes (bma=130 phl=100)
-21-05:39:54.061 [VRB] [HEAP-TEL] inbound: -1200 bytes (heap=131604 pin=307 bma=130 phl=102 lt=0 revr=0)
-21-05:39:54.065 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=132 phl=102)
-21-05:39:54.070 [VRB] [HEAP-TEL] inbound: -1184 bytes (heap=130880 pin=308 bma=132 phl=104 lt=0 revr=0)
-21-05:39:54.099 [VRB] [HEAP-TEL] jobs: 1156 bytes (heap=132880)
-21-05:39:55.490 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=130 phl=100)
-21-05:39:55.494 [VRB] [HEAP-TEL] inbound: -1196 bytes (heap=131316 pin=309 bma=130 phl=102 lt=0 revr=0)
-21-05:39:55.649 [VRB] [HEAP-TEL] jobs: 564 bytes (heap=132708)
-21-05:39:56.102 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=130 phl=100)
-21-05:39:56.106 [VRB] [HEAP-TEL] inbound: -1020 bytes (heap=131336 pin=311 bma=130 phl=102 lt=0 revr=0)
-21-05:39:56.166 [VRB] [HEAP-TEL] jobs: 560 bytes (heap=132708)
-21-05:39:56.270 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=130 phl=100)
-21-05:39:56.276 [VRB] [HEAP-TEL] inbound: -1164 bytes (heap=130984 pin=312 bma=130 phl=102 lt=0 revr=0)
-21-05:39:56.432 [VRB] [HEAP-TEL] jobs: 572 bytes (heap=132576)
-21-05:39:56.820 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=130 phl=100)
-21-05:39:56.824 [VRB] [HEAP-TEL] inbound: -1036 bytes (heap=131188 pin=313 bma=130 phl=102 lt=0 revr=0)
-21-05:39:56.948 [VRB] [HEAP-TEL] jobs: 564 bytes (heap=132564)
-21-05:39:58.048 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=130 phl=100)
-21-05:39:58.053 [VRB] [HEAP-TEL] inbound: -1036 bytes (heap=131176 pin=314 bma=130 phl=102 lt=0 revr=0)
-21-05:39:58.222 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=132 phl=102)
-21-05:39:58.227 [VRB] [HEAP-TEL] inbound: -1180 bytes (heap=130456 pin=315 bma=132 phl=104 lt=0 revr=0)
-21-05:39:58.231 [VRB] [HEAP-TEL] jobs: 1148 bytes (heap=132416)
-21-05:39:59.072 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=130 phl=100)
-21-05:39:59.078 [VRB] [HEAP-TEL] inbound: -1184 bytes (heap=130880 pin=318 bma=130 phl=102 lt=0 revr=0)
-21-05:39:59.082 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=132 phl=102)
-21-05:39:59.087 [VRB] [HEAP-TEL] inbound: -1044 bytes (heap=130296 pin=319 bma=132 phl=104 lt=0 revr=0)
-21-05:39:59.189 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=134 phl=104)
-21-05:39:59.194 [VRB] [HEAP-TEL] inbound: -1040 bytes (heap=129716 pin=320 bma=134 phl=106 lt=0 revr=0)
-21-05:39:59.265 [VRB] [HEAP-TEL] jobs: 1732 bytes (heap=132260)
-21-05:39:59.482 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=130 phl=100)
-21-05:39:59.487 [VRB] [HEAP-TEL] inbound: -1180 bytes (heap=130728 pin=321 bma=130 phl=102 lt=0 revr=0)
-21-05:39:59.531 [VRB] [HEAP-TEL] jobs: 592 bytes (heap=132132)
-21-05:39:59.588 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=130 phl=100)
-21-05:39:59.592 [VRB] [HEAP-TEL] inbound: -1044 bytes (heap=130736 pin=322 bma=130 phl=102 lt=0 revr=0)
-21-05:39:59.707 [VRB] [HEAP-TEL] boundary: -768 bytes (bma=132 phl=102)
-21-05:39:59.711 [VRB] [HEAP-TEL] inbound: -1044 bytes (heap=130152 pin=323 bma=132 phl=104 lt=0 revr=0)
-21-05:39:59.716 [VRB] [HEAP-TEL] boundary: -768 bytes (bma=134 phl=104)
-21-05:39:59.721 [VRB] [HEAP-TEL] inbound: -1044 bytes (heap=129568 pin=324 bma=134 phl=106 lt=0 revr=0)
-21-05:39:59.783 [VRB] [HEAP-TEL] jobs: 1716 bytes (heap=132096)
-21-05:39:59.890 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=130 phl=100)
-21-05:39:59.894 [VRB] [HEAP-TEL] inbound: -1168 bytes (heap=130784 pin=325 bma=130 phl=102 lt=0 revr=0)
-21-05:40:00.049 [VRB] [HEAP-TEL] jobs: 580 bytes (heap=131968)
-21-05:40:00.741 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=130 phl=100)
-21-05:40:00.745 [VRB] [HEAP-TEL] inbound: -1172 bytes (heap=130444 pin=327 bma=130 phl=102 lt=0 revr=0)
-21-05:40:00.817 [VRB] [HEAP-TEL] jobs: 568 bytes (heap=131824)
-21-05:40:01.436 [VRB] [HEAP-TEL] boundary: -768 bytes (bma=130 phl=100)
-21-05:40:01.441 [VRB] [HEAP-TEL] inbound: -1200 bytes (heap=130480 pin=328 bma=130 phl=102 lt=0 revr=0)
-21-05:40:01.601 [VRB] [HEAP-TEL] jobs: 568 bytes (heap=131652)
-21-05:40:01.632 [VRB] [HEAP-TEL] boundary: -776 bytes (bma=130 phl=100)
-21-05:40:01.636 [VRB] [HEAP-TEL] inbound: -1196 bytes (heap=130104 pin=329 bma=130 phl=102 lt=0 revr=0)
-21-05:40:01.854 [VRB] [HEAP-TEL] jobs: 588 bytes (heap=131504)
-21-05:40:02.659 [VRB] [HEAP-TEL] boundary: -776 bytes (bma=130 phl=100)
-21-05:40:02.664 [VRB] [HEAP-TEL] inbound: -1060 bytes (heap=129952 pin=330 bma=130 phl=102 lt=0 revr=0)
-21-05:40:02.884 [VRB] [HEAP-TEL] jobs: 572 bytes (heap=131336)
-21-05:40:03.496 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=130 phl=100)
-21-05:40:03.501 [VRB] [HEAP-TEL] inbound: -1192 bytes (heap=129792 pin=331 bma=130 phl=102 lt=0 revr=0)
-21-05:40:03.506 [VRB] [HEAP-TEL] boundary: -768 bytes (bma=132 phl=102)
-21-05:40:03.511 [VRB] [HEAP-TEL] inbound: -1048 bytes (heap=129204 pin=332 bma=132 phl=104 lt=0 revr=0)
-21-05:40:03.666 [VRB] [HEAP-TEL] jobs: 1176 bytes (heap=131204)
-21-05:40:04.089 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=130 phl=100)
-21-05:40:04.093 [VRB] [HEAP-TEL] inbound: -1028 bytes (heap=130032 pin=335 bma=130 phl=102 lt=0 revr=0)
-21-05:40:04.105 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=132 phl=102)
-21-05:40:04.109 [VRB] [HEAP-TEL] inbound: -1040 bytes (heap=129244 pin=336 bma=132 phl=104 lt=0 revr=0)
-21-05:40:04.183 [VRB] [HEAP-TEL] jobs: 1160 bytes (heap=131076)
-21-05:40:04.192 [VRB] [HEAP-TEL] boundary: -768 bytes (bma=130 phl=100)
-21-05:40:04.196 [VRB] [HEAP-TEL] inbound: -1048 bytes (heap=130024 pin=337 bma=130 phl=102 lt=0 revr=0)
-21-05:40:04.225 [VRB] [HEAP-TEL] boundary: -780 bytes (bma=132 phl=102)
-21-05:40:04.230 [VRB] [HEAP-TEL] inbound: -852 bytes (heap=129220 pin=338 bma=132 phl=104 lt=0 revr=0)
-21-05:40:04.400 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=134 phl=104)
-21-05:40:04.404 [VRB] [HEAP-TEL] inbound: -1036 bytes (heap=128660 pin=339 bma=134 phl=106 lt=0 revr=0)
-21-05:40:04.435 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=136 phl=106)
-21-05:40:04.441 [VRB] [HEAP-TEL] inbound: -1060 bytes (heap=128060 pin=340 bma=136 phl=108 lt=0 revr=0)
-21-05:40:04.443 [VRB] [HEAP-TEL] jobs: 2356 bytes (heap=131228)
-21-05:40:05.112 [VRB] [HEAP-TEL] boundary: -768 bytes (bma=130 phl=100)
-21-05:40:05.117 [VRB] [HEAP-TEL] inbound: -1200 bytes (heap=129888 pin=341 bma=130 phl=102 lt=0 revr=0)
-21-05:40:05.215 [VRB] [HEAP-TEL] jobs: 588 bytes (heap=131080)
-21-05:40:06.547 [VRB] [HEAP-TEL] boundary: -796 bytes (bma=130 phl=100)
-21-05:40:06.552 [VRB] [HEAP-TEL] inbound: -1092 bytes (heap=129636 pin=342 bma=130 phl=102 lt=0 revr=0)
-21-05:40:06.765 [VRB] [HEAP-TEL] jobs: 576 bytes (heap=131024)
-21-05:40:07.800 [VRB] [HEAP-TEL] boundary: -768 bytes (bma=130 phl=100)
-21-05:40:07.805 [VRB] [HEAP-TEL] inbound: -1216 bytes (heap=129456 pin=343 bma=130 phl=102 lt=0 revr=0)
-21-05:40:07.808 [VRB] [HEAP-TEL] jobs: 576 bytes (heap=130844)
-21-05:40:08.245 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=130 phl=100)
-21-05:40:08.249 [VRB] [HEAP-TEL] inbound: -1184 bytes (heap=129308 pin=345 bma=130 phl=102 lt=0 revr=0)
-21-05:40:08.315 [VRB] [HEAP-TEL] jobs: 572 bytes (heap=130692)
-21-05:40:08.800 [VRB] [HEAP-TEL] boundary: -780 bytes (bma=130 phl=100)
-21-05:40:08.805 [VRB] [HEAP-TEL] inbound: -1204 bytes (heap=129344 pin=346 bma=130 phl=102 lt=0 revr=0)
-21-05:40:08.838 [VRB] [HEAP-TEL] jobs: 572 bytes (heap=130520)
-21-05:40:09.045 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=130 phl=100)
-21-05:40:09.049 [VRB] [HEAP-TEL] inbound: -1032 bytes (heap=129344 pin=347 bma=130 phl=102 lt=0 revr=0)
-21-05:40:09.089 [VRB] [HEAP-TEL] jobs: 592 bytes (heap=130540)
-21-05:40:09.110 [VRB] [HEAP-TEL] boundary: -772 bytes (bma=130 phl=100)
-21-05:40:09.114 [VRB] [HEAP-TEL] inbound: -1048 bytes (heap=129140 pin=348 bma=130 phl=102 lt=0 revr=0)
-21-05:40:09.186 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=132 phl=102)
-21-05:40:09.191 [VRB] [HEAP-TEL] inbound: -1040 bytes (heap=128560 pin=349 bma=132 phl=104 lt=0 revr=0)
-21-05:40:09.248 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=134 phl=104)
-21-05:40:09.252 [VRB] [HEAP-TEL] inbound: -1032 bytes (heap=128196 pin=350 bma=134 phl=106 lt=0 revr=0)
-21-05:40:09.286 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=136 phl=106)
-21-05:40:09.292 [VRB] [HEAP-TEL] inbound: -832 bytes (heap=127616 pin=351 bma=136 phl=108 lt=0 revr=0)
-21-05:40:09.359 [VRB] [HEAP-TEL] boundary: -784 bytes (bma=138 phl=108)
-21-05:40:09.363 [VRB] [HEAP-TEL] inbound: -1056 bytes (heap=126800 pin=352 bma=138 phl=110 lt=0 revr=0)
-21-05:40:09.366 [VRB] [HEAP-TEL] jobs: 2928 bytes (heap=130572)
-21-05:40:09.532 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=130 phl=100)
-21-05:40:09.537 [VRB] [HEAP-TEL] inbound: -1036 bytes (heap=129184 pin=353 bma=130 phl=102 lt=0 revr=0)
-21-05:40:09.542 [VRB] [HEAP-TEL] boundary: -768 bytes (bma=132 phl=102)
-21-05:40:09.547 [VRB] [HEAP-TEL] inbound: -1044 bytes (heap=128600 pin=354 bma=132 phl=104 lt=0 revr=0)
-21-05:40:09.618 [VRB] [HEAP-TEL] jobs: 1144 bytes (heap=130556)
-21-05:40:10.565 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=130 phl=100)
-21-05:40:10.569 [VRB] [HEAP-TEL] inbound: -1164 bytes (heap=129040 pin=355 bma=130 phl=102 lt=0 revr=0)
-21-05:40:10.641 [VRB] [HEAP-TEL] jobs: 568 bytes (heap=130420)
-21-05:40:11.257 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=130 phl=100)
-21-05:40:11.262 [VRB] [HEAP-TEL] inbound: -1020 bytes (heap=129048 pin=356 bma=130 phl=102 lt=0 revr=0)
-21-05:40:11.425 [VRB] [HEAP-TEL] jobs: 572 bytes (heap=130432)
-21-05:40:11.508 [VRB] [HEAP-TEL] boundary: -788 bytes (bma=130 phl=100)
-21-05:40:11.513 [VRB] [HEAP-TEL] inbound: -1064 bytes (heap=129016 pin=357 bma=130 phl=102 lt=0 revr=0)
-21-05:40:11.677 [VRB] [HEAP-TEL] jobs: 568 bytes (heap=130396)
-21-05:40:12.080 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=130 phl=100)
-21-05:40:12.084 [VRB] [HEAP-TEL] inbound: -1028 bytes (heap=129224 pin=358 bma=130 phl=102 lt=0 revr=0)
-21-05:40:12.193 [VRB] [HEAP-TEL] jobs: 576 bytes (heap=130404)
-21-05:40:12.593 [VRB] [HEAP-TEL] boundary: -788 bytes (bma=130 phl=100)
-21-05:40:12.598 [VRB] [HEAP-TEL] inbound: -1220 bytes (heap=128832 pin=359 bma=130 phl=102 lt=0 revr=0)
-21-05:40:12.714 [VRB] [HEAP-TEL] jobs: 592 bytes (heap=130236)
-21-05:40:12.811 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=130 phl=100)
-21-05:40:12.815 [VRB] [HEAP-TEL] inbound: -1200 bytes (heap=128684 pin=360 bma=130 phl=102 lt=0 revr=0)
-21-05:40:12.980 [VRB] [HEAP-TEL] jobs: 572 bytes (heap=130068)
-21-05:40:14.330 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=130 phl=100)
-21-05:40:14.335 [VRB] [HEAP-TEL] inbound: -1188 bytes (heap=128528 pin=361 bma=130 phl=102 lt=0 revr=0)
-21-05:40:14.541 [VRB] [HEAP-TEL] jobs: 584 bytes (heap=129928)
-21-05:40:14.846 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=130 phl=100)
-21-05:40:14.851 [VRB] [HEAP-TEL] inbound: -1036 bytes (heap=128488 pin=362 bma=130 phl=102 lt=0 revr=0)
-21-05:40:14.856 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=132 phl=102)
-21-05:40:14.861 [VRB] [HEAP-TEL] inbound: -1044 bytes (heap=127904 pin=363 bma=132 phl=104 lt=0 revr=0)
-21-05:40:14.865 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=134 phl=104)
-21-05:40:14.870 [VRB] [HEAP-TEL] inbound: -1192 bytes (heap=127224 pin=364 bma=134 phl=106 lt=0 revr=0)
-21-05:40:15.013 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=136 phl=106)
-21-05:40:15.017 [VRB] [HEAP-TEL] inbound: -1020 bytes (heap=126872 pin=365 bma=136 phl=108 lt=0 revr=0)
-21-05:40:15.045 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=138 phl=108)
-21-05:40:15.051 [VRB] [HEAP-TEL] inbound: -1024 bytes (heap=125892 pin=366 bma=138 phl=110 lt=0 revr=0)
-21-05:40:15.053 [VRB] [HEAP-TEL] jobs: 2876 bytes (heap=129580)
-21-05:40:15.664 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=130 phl=100)
-21-05:40:15.668 [VRB] [HEAP-TEL] inbound: -1028 bytes (heap=128408 pin=367 bma=130 phl=102 lt=0 revr=0)
-21-05:40:15.807 [VRB] [HEAP-TEL] jobs: 584 bytes (heap=129804)
-21-05:40:16.069 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=130 phl=100)
-21-05:40:16.073 [VRB] [HEAP-TEL] inbound: -1016 bytes (heap=128436 pin=368 bma=130 phl=102 lt=0 revr=0)
-21-05:40:16.311 [VRB] [HEAP-TEL] jobs: 556 bytes (heap=129804)
-21-05:40:16.816 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=130 phl=100)
-21-05:40:16.821 [VRB] [HEAP-TEL] inbound: -1020 bytes (heap=128432 pin=370 bma=130 phl=102 lt=0 revr=0)
-21-05:40:16.824 [VRB] [HEAP-TEL] jobs: 560 bytes (heap=129804)
-21-05:40:17.401 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=130 phl=100)
-21-05:40:17.406 [VRB] [HEAP-TEL] inbound: -1176 bytes (heap=128276 pin=371 bma=130 phl=102 lt=0 revr=0)
-21-05:40:17.729 [VRB] [HEAP-TEL] boundary: -788 bytes (bma=132 phl=102)
-21-05:40:17.734 [VRB] [HEAP-TEL] inbound: -1208 bytes (heap=127388 pin=373 bma=132 phl=104 lt=0 revr=0)
-21-05:40:17.844 [VRB] [HEAP-TEL] jobs: 1152 bytes (heap=129492)
-21-05:40:18.327 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=130 phl=100)
-21-05:40:18.332 [VRB] [HEAP-TEL] inbound: -1192 bytes (heap=127948 pin=374 bma=130 phl=102 lt=0 revr=0)
-21-05:40:18.365 [VRB] [HEAP-TEL] jobs: 572 bytes (heap=129332)
-21-05:40:18.375 [VRB] [HEAP-TEL] boundary: -772 bytes (bma=130 phl=100)
-21-05:40:18.381 [VRB] [HEAP-TEL] inbound: -840 bytes (heap=128140 pin=375 bma=130 phl=102 lt=0 revr=0)
-21-05:40:18.617 [VRB] [HEAP-TEL] jobs: 568 bytes (heap=129312)
-21-05:40:19.575 [VRB] [HEAP-TEL] boundary: -792 bytes (bma=130 phl=100)
-21-05:40:19.580 [VRB] [HEAP-TEL] inbound: -848 bytes (heap=127904 pin=376 bma=130 phl=102 lt=0 revr=0)
-21-05:40:19.585 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=132 phl=102)
-21-05:40:19.590 [VRB] [HEAP-TEL] inbound: -1016 bytes (heap=127348 pin=377 bma=132 phl=104 lt=0 revr=0)
-21-05:40:19.599 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=134 phl=104)
-21-05:40:19.604 [VRB] [HEAP-TEL] inbound: -1028 bytes (heap=126780 pin=378 bma=134 phl=106 lt=0 revr=0)
-21-05:40:19.649 [VRB] [HEAP-TEL] jobs: 1700 bytes (heap=129152)
-21-05:40:19.762 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=130 phl=100)
-21-05:40:19.767 [VRB] [HEAP-TEL] inbound: -824 bytes (heap=127908 pin=379 bma=130 phl=102 lt=0 revr=0)
-21-05:40:19.915 [VRB] [HEAP-TEL] jobs: 572 bytes (heap=129292)
-21-05:40:19.966 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=130 phl=100)
-21-05:40:19.971 [VRB] [HEAP-TEL] inbound: -1184 bytes (heap=127964 pin=380 bma=130 phl=102 lt=0 revr=0)
-21-05:40:20.166 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=132 phl=102)
-21-05:40:20.170 [VRB] [HEAP-TEL] inbound: -1028 bytes (heap=127396 pin=381 bma=132 phl=104 lt=0 revr=0)
-21-05:40:20.173 [VRB] [HEAP-TEL] jobs: 1168 bytes (heap=129168)
-21-05:40:20.607 [VRB] [HEAP-TEL] boundary: -780 bytes (bma=130 phl=100)
-21-05:40:20.611 [VRB] [HEAP-TEL] inbound: -1208 bytes (heap=127608 pin=382 bma=130 phl=102 lt=0 revr=0)
-21-05:40:20.682 [VRB] [HEAP-TEL] jobs: 564 bytes (heap=128984)
-21-05:40:22.010 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=130 phl=100)
-21-05:40:22.015 [VRB] [HEAP-TEL] inbound: -1036 bytes (heap=127596 pin=385 bma=130 phl=102 lt=0 revr=0)
-21-05:40:22.233 [VRB] [HEAP-TEL] jobs: 576 bytes (heap=128984)
-21-05:40:22.329 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=130 phl=100)
-21-05:40:22.335 [VRB] [HEAP-TEL] inbound: -996 bytes (heap=127416 pin=386 bma=130 phl=102 lt=0 revr=0)
-21-05:40:22.339 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=132 phl=102)
-21-05:40:22.344 [VRB] [HEAP-TEL] inbound: -1172 bytes (heap=126704 pin=387 bma=132 phl=104 lt=0 revr=0)
-21-05:40:22.499 [VRB] [HEAP-TEL] jobs: 1152 bytes (heap=128668)
-21-05:40:22.625 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=130 phl=100)
-21-05:40:22.629 [VRB] [HEAP-TEL] inbound: -1180 bytes (heap=127136 pin=388 bma=130 phl=102 lt=0 revr=0)
-21-05:40:22.752 [VRB] [HEAP-TEL] jobs: 592 bytes (heap=128540)
-21-05:40:24.395 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=130 phl=100)
-21-05:40:24.400 [VRB] [HEAP-TEL] inbound: -1048 bytes (heap=127140 pin=389 bma=130 phl=102 lt=0 revr=0)
-21-05:40:24.566 [VRB] [HEAP-TEL] jobs: 584 bytes (heap=128536)
-21-05:40:25.089 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=130 phl=100)
-21-05:40:25.094 [VRB] [HEAP-TEL] inbound: -1200 bytes (heap=126888 pin=390 bma=130 phl=102 lt=0 revr=0)
-21-05:40:25.098 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=132 phl=102)
-21-05:40:25.103 [VRB] [HEAP-TEL] inbound: -1028 bytes (heap=126320 pin=391 bma=132 phl=104 lt=0 revr=0)
-21-05:40:25.109 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=134 phl=104)
-21-05:40:25.114 [VRB] [HEAP-TEL] inbound: -820 bytes (heap=125848 pin=392 bma=134 phl=106 lt=0 revr=0)
-21-05:40:25.286 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=136 phl=106)
-21-05:40:25.291 [VRB] [HEAP-TEL] inbound: -1180 bytes (heap=125128 pin=394 bma=136 phl=108 lt=0 revr=0)
-21-05:40:25.333 [VRB] [HEAP-TEL] jobs: 2180 bytes (heap=128120)
-21-05:40:25.548 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=130 phl=100)
-21-05:40:25.553 [VRB] [HEAP-TEL] inbound: -1184 bytes (heap=126932 pin=395 bma=130 phl=102 lt=0 revr=0)
-21-05:40:25.599 [VRB] [HEAP-TEL] jobs: 568 bytes (heap=128104)
-21-05:40:25.801 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=130 phl=100)
-21-05:40:25.807 [VRB] [HEAP-TEL] inbound: -1192 bytes (heap=126560 pin=396 bma=130 phl=102 lt=0 revr=0)
-21-05:40:25.851 [VRB] [HEAP-TEL] jobs: 584 bytes (heap=127956)
-21-05:40:25.952 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=130 phl=100)
-21-05:40:25.956 [VRB] [HEAP-TEL] inbound: -1040 bytes (heap=125188 pin=397 bma=130 phl=102 lt=0 revr=0)
-21-05:40:26.291 [VRB] [HEAP-TEL] boundary: -768 bytes (bma=132 phl=102)
-21-05:40:26.296 [VRB] [HEAP-TEL] inbound: -1048 bytes (heap=125976 pin=399 bma=132 phl=104 lt=0 revr=0)
-21-05:40:26.366 [VRB] [HEAP-TEL] jobs: 1172 bytes (heap=127960)
-21-05:40:27.028 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=130 phl=100)
-21-05:40:27.034 [VRB] [HEAP-TEL] inbound: -1476 bytes (heap=126132 pin=400 bma=130 phl=102 lt=0 revr=0)
-21-05:40:27.149 [VRB] [HEAP-TEL] jobs: 588 bytes (heap=127824)
-21-05:40:27.748 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=130 phl=100)
-21-05:40:27.752 [VRB] [HEAP-TEL] inbound: -1188 bytes (heap=126284 pin=401 bma=130 phl=102 lt=0 revr=0)
-21-05:40:27.916 [VRB] [HEAP-TEL] jobs: 584 bytes (heap=127680)
-21-05:40:28.098 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=130 phl=100)
-21-05:40:28.102 [VRB] [HEAP-TEL] inbound: -1052 bytes (heap=126276 pin=403 bma=130 phl=102 lt=0 revr=0)
-21-05:40:28.181 [VRB] [HEAP-TEL] jobs: 604 bytes (heap=127692)
-21-05:40:28.875 [VRB] [HEAP-TEL] boundary: -788 bytes (bma=130 phl=100)
-21-05:40:28.879 [VRB] [HEAP-TEL] inbound: -1064 bytes (heap=126484 pin=405 bma=130 phl=102 lt=0 revr=0)
-21-05:40:28.948 [VRB] [HEAP-TEL] jobs: 588 bytes (heap=127676)
-21-05:40:29.390 [VRB] [HEAP-TEL] boundary: -776 bytes (bma=130 phl=100)
-21-05:40:29.396 [VRB] [HEAP-TEL] inbound: -1256 bytes (heap=126068 pin=406 bma=130 phl=102 lt=0 revr=0)
-21-05:40:29.401 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=132 phl=102)
-21-05:40:29.406 [VRB] [HEAP-TEL] inbound: -1176 bytes (heap=125396 pin=407 bma=132 phl=104 lt=0 revr=0)
-21-05:40:29.466 [VRB] [HEAP-TEL] jobs: 1144 bytes (heap=127352)
-21-05:40:29.590 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=130 phl=100)
-21-05:40:29.594 [VRB] [HEAP-TEL] inbound: -828 bytes (heap=126172 pin=408 bma=130 phl=102 lt=0 revr=0)
-21-05:40:29.599 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=132 phl=102)
-21-05:40:29.604 [VRB] [HEAP-TEL] inbound: -1036 bytes (heap=125596 pin=409 bma=132 phl=104 lt=0 revr=0)
-21-05:40:29.691 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=134 phl=104)
-21-05:40:29.696 [VRB] [HEAP-TEL] inbound: -1028 bytes (heap=124800 pin=410 bma=134 phl=106 lt=0 revr=0)
-21-05:40:29.732 [VRB] [HEAP-TEL] jobs: 1716 bytes (heap=127348)
-21-05:40:30.306 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=130 phl=100)
-21-05:40:30.310 [VRB] [HEAP-TEL] inbound: -1036 bytes (heap=126168 pin=411 bma=130 phl=102 lt=0 revr=0)
-21-05:40:30.499 [VRB] [HEAP-TEL] jobs: 584 bytes (heap=127356)
-21-05:40:30.821 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=130 phl=100)
-21-05:40:30.825 [VRB] [HEAP-TEL] inbound: -1036 bytes (heap=125968 pin=413 bma=130 phl=102 lt=0 revr=0)
-21-05:40:30.830 [VRB] [HEAP-TEL] boundary: -768 bytes (bma=132 phl=102)
-21-05:40:30.835 [VRB] [HEAP-TEL] inbound: -1200 bytes (heap=125228 pin=414 bma=132 phl=104 lt=0 revr=0)
-21-05:40:31.015 [VRB] [HEAP-TEL] jobs: 1156 bytes (heap=127196)
-21-05:40:31.329 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=130 phl=100)
-21-05:40:31.334 [VRB] [HEAP-TEL] inbound: -1192 bytes (heap=125652 pin=415 bma=130 phl=102 lt=0 revr=0)
-21-05:40:31.535 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=132 phl=102)
-21-05:40:31.540 [VRB] [HEAP-TEL] inbound: -1028 bytes (heap=125084 pin=416 bma=132 phl=104 lt=0 revr=0)
-21-05:40:31.542 [VRB] [HEAP-TEL] jobs: 1180 bytes (heap=127084)
-21-05:40:31.572 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=130 phl=100)
-21-05:40:31.577 [VRB] [HEAP-TEL] inbound: -1192 bytes (heap=125540 pin=417 bma=130 phl=102 lt=0 revr=0)
-21-05:40:31.797 [VRB] [HEAP-TEL] jobs: 584 bytes (heap=126728)
-21-05:40:32.967 [VRB] [HEAP-TEL] boundary: -780 bytes (bma=130 phl=100)
-21-05:40:32.972 [VRB] [HEAP-TEL] inbound: -1068 bytes (heap=125516 pin=420 bma=130 phl=102 lt=0 revr=0)
-21-05:40:33.080 [VRB] [HEAP-TEL] jobs: 580 bytes (heap=126908)
-21-05:40:34.093 [VRB] [HEAP-TEL] boundary: -784 bytes (bma=130 phl=100)
-21-05:40:34.097 [VRB] [HEAP-TEL] inbound: -1076 bytes (heap=125480 pin=421 bma=130 phl=102 lt=0 revr=0)
-21-05:40:34.118 [VRB] [HEAP-TEL] jobs: 612 bytes (heap=126904)
-21-05:40:34.605 [VRB] [HEAP-TEL] boundary: -788 bytes (bma=130 phl=100)
-21-05:40:34.610 [VRB] [HEAP-TEL] inbound: -1064 bytes (heap=125696 pin=422 bma=130 phl=102 lt=0 revr=0)
-21-05:40:34.628 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=132 phl=102)
-21-05:40:34.632 [VRB] [HEAP-TEL] inbound: -1020 bytes (heap=124928 pin=423 bma=132 phl=104 lt=0 revr=0)
-21-05:40:34.636 [VRB] [HEAP-TEL] jobs: 1152 bytes (heap=126684)
-21-05:40:34.731 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=130 phl=100)
-21-05:40:34.735 [VRB] [HEAP-TEL] inbound: -1016 bytes (heap=125524 pin=424 bma=130 phl=102 lt=0 revr=0)
-21-05:40:34.813 [VRB] [HEAP-TEL] boundary: -772 bytes (bma=132 phl=102)
-21-05:40:34.818 [VRB] [HEAP-TEL] inbound: -832 bytes (heap=124944 pin=425 bma=132 phl=104 lt=0 revr=0)
-21-05:40:34.902 [VRB] [HEAP-TEL] jobs: 1148 bytes (heap=126904)
-21-05:40:35.022 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=130 phl=100)
-21-05:40:35.026 [VRB] [HEAP-TEL] inbound: -1040 bytes (heap=125720 pin=426 bma=130 phl=102 lt=0 revr=0)
-21-05:40:35.155 [VRB] [HEAP-TEL] jobs: 580 bytes (heap=126904)
-21-05:40:37.165 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=130 phl=100)
-21-05:40:37.169 [VRB] [HEAP-TEL] inbound: -1188 bytes (heap=125364 pin=427 bma=130 phl=102 lt=0 revr=0)
-21-05:40:37.219 [VRB] [HEAP-TEL] jobs: 584 bytes (heap=126760)
-21-05:40:38.091 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=130 phl=100)
-21-05:40:38.096 [VRB] [HEAP-TEL] inbound: -1052 bytes (heap=125356 pin=428 bma=130 phl=102 lt=0 revr=0)
-21-05:40:38.251 [VRB] [HEAP-TEL] jobs: 588 bytes (heap=126756)
-21-05:40:39.115 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=130 phl=100)
-21-05:40:39.119 [VRB] [HEAP-TEL] inbound: -1052 bytes (heap=125352 pin=429 bma=130 phl=102 lt=0 revr=0)
-21-05:40:39.284 [VRB] [HEAP-TEL] jobs: 580 bytes (heap=126744)
-21-05:40:39.829 [VRB] [HEAP-TEL] boundary: -564 bytes (bma=130 phl=100)
-21-05:40:39.834 [VRB] [HEAP-TEL] inbound: -1008 bytes (heap=125176 pin=430 bma=130 phl=102 lt=0 revr=0)
-21-05:40:39.838 [VRB] [HEAP-TEL] boundary: -780 bytes (bma=132 phl=102)
-21-05:40:39.843 [VRB] [HEAP-TEL] inbound: -1056 bytes (heap=124580 pin=431 bma=132 phl=104 lt=0 revr=0)
-21-05:40:39.930 [VRB] [HEAP-TEL] boundary: -768 bytes (bma=134 phl=104)
-21-05:40:39.934 [VRB] [HEAP-TEL] inbound: -1040 bytes (heap=124232 pin=432 bma=134 phl=106 lt=0 revr=0)
-21-05:40:39.948 [VRB] [HEAP-TEL] boundary: -780 bytes (bma=136 phl=106)
-21-05:40:39.953 [VRB] [HEAP-TEL] inbound: -1052 bytes (heap=123652 pin=433 bma=136 phl=108 lt=0 revr=0)
-21-05:40:40.065 [VRB] [HEAP-TEL] jobs: 2312 bytes (heap=126592)
-21-05:40:40.135 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=130 phl=100)
-21-05:40:40.139 [VRB] [HEAP-TEL] inbound: -1028 bytes (heap=125420 pin=434 bma=130 phl=102 lt=0 revr=0)
-21-05:40:40.318 [VRB] [HEAP-TEL] jobs: 612 bytes (heap=126636)
-21-05:40:40.345 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=130 phl=100)
-21-05:40:40.350 [VRB] [HEAP-TEL] inbound: -1024 bytes (heap=125240 pin=435 bma=130 phl=102 lt=0 revr=0)
-21-05:40:40.582 [VRB] [HEAP-TEL] jobs: 564 bytes (heap=126636)
-21-05:40:40.857 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=130 phl=100)
-21-05:40:40.861 [VRB] [HEAP-TEL] inbound: -1028 bytes (heap=125464 pin=436 bma=130 phl=102 lt=0 revr=0)
-21-05:40:40.958 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=132 phl=102)
-21-05:40:40.962 [VRB] [HEAP-TEL] inbound: -1048 bytes (heap=124636 pin=437 bma=132 phl=104 lt=0 revr=0)
-21-05:40:41.098 [VRB] [HEAP-TEL] jobs: 1132 bytes (heap=126612)
-21-05:40:41.817 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=130 phl=100)
-21-05:40:41.821 [VRB] [HEAP-TEL] inbound: -1040 bytes (heap=125428 pin=439 bma=130 phl=102 lt=0 revr=0)
-21-05:40:42.137 [VRB] mem: 126620 (43%) [-12336] flash: 3477504 (98%) [0] paths: 3 dsts: 5 revr: 0 annc: 0 held: 0
-21-05:40:42.138 [VRB] preqs: 255 dpreqs: 0 ppreqs: 0 dprt: 32 cdsts: 2 chshs: 2
-21-05:40:42.139 [VRB] phl: 100 rcp: 0 lt: 0 pl: 0 al: 0 tun: 0
-21-05:40:42.140 [VRB] bla: 0 bma: 128
-21-05:40:42.141 [VRB] pin: 439 pout: 399 padd: 0 dpr: 2 ikd: 0 ia: 0
-
-21-05:40:42.142 [VRB] [HEAP-TEL] jobs: 588 bytes (heap=126620)
-21-05:40:42.390 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=130 phl=100)
-21-05:40:42.394 [VRB] [HEAP-TEL] inbound: -1188 bytes (heap=125080 pin=440 bma=130 phl=102 lt=0 revr=0)
-21-05:40:42.397 [VRB] [HEAP-TEL] jobs: 584 bytes (heap=126476)
-21-05:40:43.104 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=130 phl=100)
-21-05:40:43.108 [VRB] [HEAP-TEL] inbound: -1196 bytes (heap=124928 pin=443 bma=130 phl=102 lt=0 revr=0)
-21-05:40:43.152 [VRB] [HEAP-TEL] jobs: 580 bytes (heap=126180)
-21-05:40:43.618 [VRB] [HEAP-TEL] boundary: -788 bytes (bma=130 phl=100)
-21-05:40:43.622 [VRB] [HEAP-TEL] inbound: -1068 bytes (heap=124900 pin=444 bma=130 phl=102 lt=0 revr=0)
-21-05:40:43.654 [VRB] [HEAP-TEL] jobs: 588 bytes (heap=126300)
-21-05:40:43.664 [VRB] [HEAP-TEL] boundary: -792 bytes (bma=130 phl=100)
-21-05:40:43.669 [VRB] [HEAP-TEL] inbound: -1064 bytes (heap=124676 pin=445 bma=130 phl=102 lt=0 revr=0)
-21-05:40:43.727 [VRB] [HEAP-TEL] boundary: -772 bytes (bma=132 phl=102)
-21-05:40:43.731 [VRB] [HEAP-TEL] inbound: -1056 bytes (heap=124288 pin=446 bma=132 phl=104 lt=0 revr=0)
-21-05:40:43.903 [VRB] [HEAP-TEL] boundary: -772 bytes (bma=134 phl=104)
-21-05:40:43.909 [VRB] [HEAP-TEL] inbound: -1052 bytes (heap=123704 pin=448 bma=134 phl=106 lt=0 revr=0)
-21-05:40:43.911 [VRB] [HEAP-TEL] jobs: 1708 bytes (heap=126240)
-21-05:40:44.032 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=130 phl=100)
-21-05:40:44.036 [VRB] [HEAP-TEL] inbound: -1032 bytes (heap=124856 pin=449 bma=130 phl=102 lt=0 revr=0)
-21-05:40:44.076 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=132 phl=102)
-21-05:40:44.080 [VRB] [HEAP-TEL] inbound: -1024 bytes (heap=124292 pin=450 bma=132 phl=104 lt=0 revr=0)
-21-05:40:44.162 [VRB] [HEAP-TEL] jobs: 1152 bytes (heap=126256)
-21-05:40:44.340 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=130 phl=100)
-21-05:40:44.344 [VRB] [HEAP-TEL] inbound: -1032 bytes (heap=124872 pin=451 bma=130 phl=102 lt=0 revr=0)
-21-05:40:44.418 [VRB] [HEAP-TEL] jobs: 580 bytes (heap=126264)
-21-05:40:44.950 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=130 phl=100)
-21-05:40:44.954 [VRB] [HEAP-TEL] inbound: -1020 bytes (heap=124848 pin=452 bma=130 phl=102 lt=0 revr=0)
-21-05:40:44.959 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=132 phl=102)
-21-05:40:44.964 [VRB] [HEAP-TEL] inbound: -1044 bytes (heap=124264 pin=453 bma=132 phl=104 lt=0 revr=0)
-21-05:40:44.968 [VRB] [HEAP-TEL] boundary: -772 bytes (bma=134 phl=104)
-21-05:40:44.973 [VRB] [HEAP-TEL] inbound: -1036 bytes (heap=123732 pin=454 bma=134 phl=106 lt=0 revr=0)
-21-05:40:45.055 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=136 phl=106)
-21-05:40:45.060 [VRB] [HEAP-TEL] inbound: -836 bytes (heap=123356 pin=455 bma=136 phl=108 lt=0 revr=0)
-21-05:40:45.185 [VRB] [HEAP-TEL] jobs: 2328 bytes (heap=126292)
-21-05:40:45.281 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=130 phl=100)
-21-05:40:45.285 [VRB] [HEAP-TEL] inbound: -1028 bytes (heap=124912 pin=456 bma=130 phl=102 lt=0 revr=0)
-21-05:40:45.305 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=132 phl=102)
-21-05:40:45.309 [VRB] [HEAP-TEL] inbound: -1188 bytes (heap=123976 pin=457 bma=132 phl=104 lt=0 revr=0)
-21-05:40:45.450 [VRB] [HEAP-TEL] jobs: 1160 bytes (heap=126156)
-21-05:40:46.077 [VRB] [HEAP-TEL] boundary: -1048 bytes (bma=130 phl=100)
-21-05:40:46.082 [VRB] [HEAP-TEL] inbound: -1032 bytes (heap=124772 pin=458 bma=130 phl=102 lt=0 revr=0)
-21-05:40:46.218 [VRB] [HEAP-TEL] jobs: 584 bytes (heap=126168)
-21-05:40:46.593 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=130 phl=100)
-21-05:40:46.599 [VRB] [HEAP-TEL] inbound: -964 bytes (heap=124644 pin=460 bma=130 phl=102 lt=0 revr=0)
-21-05:40:46.603 [VRB] [HEAP-TEL] boundary: -776 bytes (bma=132 phl=102)
-21-05:40:46.608 [VRB] [HEAP-TEL] inbound: -1064 bytes (heap=124040 pin=461 bma=132 phl=104 lt=0 revr=0)
-21-05:40:46.739 [VRB] [HEAP-TEL] jobs: 1156 bytes (heap=126008)
-21-05:40:46.797 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=130 phl=100)
-21-05:40:46.801 [VRB] [HEAP-TEL] inbound: -1056 bytes (heap=124600 pin=462 bma=130 phl=102 lt=0 revr=0)
-21-05:40:47.008 [VRB] [HEAP-TEL] jobs: 604 bytes (heap=126020)
-21-05:40:47.818 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=130 phl=100)
-21-05:40:47.823 [VRB] [HEAP-TEL] inbound: -1048 bytes (heap=124828 pin=463 bma=130 phl=102 lt=0 revr=0)
-21-05:40:48.041 [VRB] [HEAP-TEL] jobs: 584 bytes (heap=126016)
-21-05:40:48.333 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=130 phl=100)
-21-05:40:48.337 [VRB] [HEAP-TEL] inbound: -1192 bytes (heap=124680 pin=464 bma=130 phl=102 lt=0 revr=0)
-21-05:40:48.558 [VRB] [HEAP-TEL] jobs: 584 bytes (heap=125868)
-21-05:40:49.660 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=130 phl=100)
-21-05:40:49.664 [VRB] [HEAP-TEL] inbound: -1056 bytes (heap=124668 pin=465 bma=130 phl=102 lt=0 revr=0)
-21-05:40:49.842 [VRB] [HEAP-TEL] jobs: 596 bytes (heap=125868)
-21-05:40:49.862 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=130 phl=100)
-21-05:40:49.866 [VRB] [HEAP-TEL] inbound: -1052 bytes (heap=124464 pin=466 bma=130 phl=102 lt=0 revr=0)
-21-05:40:49.966 [VRB] [HEAP-TEL] boundary: -600 bytes (bma=132 phl=102)
-21-05:40:49.970 [VRB] [HEAP-TEL] inbound: -868 bytes (heap=123848 pin=467 bma=132 phl=104 lt=0 revr=0)
-21-05:40:49.998 [VRB] [HEAP-TEL] boundary: -772 bytes (bma=134 phl=104)
-21-05:40:50.002 [VRB] [HEAP-TEL] inbound: -1040 bytes (heap=123476 pin=468 bma=134 phl=106 lt=0 revr=0)
-21-05:40:50.109 [VRB] [HEAP-TEL] jobs: 1728 bytes (heap=125816)
-21-05:40:50.382 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=130 phl=100)
-21-05:40:50.386 [VRB] [HEAP-TEL] inbound: -1192 bytes (heap=124272 pin=469 bma=130 phl=102 lt=0 revr=0)
-21-05:40:50.391 [VRB] [HEAP-TEL] boundary: -800 bytes (bma=132 phl=102)
-21-05:40:50.396 [VRB] [HEAP-TEL] inbound: -1072 bytes (heap=123660 pin=470 bma=132 phl=104 lt=0 revr=0)
-21-05:40:50.624 [VRB] [HEAP-TEL] jobs: 1144 bytes (heap=125616)
-21-05:40:51.502 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=130 phl=100)
-21-05:40:51.507 [VRB] [HEAP-TEL] inbound: -1188 bytes (heap=124076 pin=471 bma=130 phl=102 lt=0 revr=0)
-21-05:40:51.612 [VRB] [HEAP-TEL] boundary: -776 bytes (bma=132 phl=102)
-21-05:40:51.616 [VRB] [HEAP-TEL] inbound: -1052 bytes (heap=123484 pin=472 bma=132 phl=104 lt=0 revr=0)
-21-05:40:51.656 [VRB] [HEAP-TEL] jobs: 1160 bytes (heap=125456)
-21-05:40:51.843 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=130 phl=100)
-21-05:40:51.848 [VRB] [HEAP-TEL] inbound: -1196 bytes (heap=123908 pin=473 bma=130 phl=102 lt=0 revr=0)
-21-05:40:51.908 [VRB] [HEAP-TEL] jobs: 576 bytes (heap=125296)
-21-05:40:52.095 [VRB] [HEAP-TEL] boundary: -768 bytes (bma=130 phl=100)
-21-05:40:52.100 [VRB] [HEAP-TEL] inbound: -1192 bytes (heap=123960 pin=474 bma=130 phl=102 lt=0 revr=0)
-21-05:40:52.173 [VRB] [HEAP-TEL] jobs: 572 bytes (heap=125136)
-21-05:40:52.633 [VRB] [HEAP-TEL] boundary: -768 bytes (bma=130 phl=100)
-21-05:40:52.638 [VRB] [HEAP-TEL] inbound: -1180 bytes (heap=123812 pin=475 bma=130 phl=102 lt=0 revr=0)
-21-05:40:52.690 [VRB] [HEAP-TEL] jobs: 588 bytes (heap=125004)
-21-05:40:52.897 [VRB] [HEAP-TEL] boundary: -780 bytes (bma=130 phl=100)
-21-05:40:52.903 [VRB] [HEAP-TEL] inbound: -1212 bytes (heap=123300 pin=476 bma=130 phl=102 lt=0 revr=0)
-21-05:40:52.941 [VRB] [HEAP-TEL] jobs: 568 bytes (heap=124820)
-21-05:40:53.243 [VRB] [HEAP-TEL] boundary: -776 bytes (bma=130 phl=100)
-21-05:40:53.248 [VRB] [HEAP-TEL] inbound: -1048 bytes (heap=123420 pin=477 bma=130 phl=102 lt=0 revr=0)
-21-05:40:53.457 [VRB] [HEAP-TEL] jobs: 600 bytes (heap=124832)
-21-05:40:53.653 [VRB] [HEAP-TEL] boundary: -784 bytes (bma=130 phl=100)
-21-05:40:53.657 [VRB] [HEAP-TEL] inbound: -1200 bytes (heap=123280 pin=478 bma=130 phl=102 lt=0 revr=0)
-21-05:40:54.472 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=132 phl=102)
-21-05:40:54.477 [VRB] [HEAP-TEL] inbound: -1168 bytes (heap=122572 pin=480 bma=132 phl=104 lt=0 revr=0)
-21-05:40:54.495 [VRB] [HEAP-TEL] jobs: 1144 bytes (heap=124528)
-21-05:40:54.693 [VRB] [HEAP-TEL] boundary: -780 bytes (bma=130 phl=100)
-21-05:40:54.698 [VRB] [HEAP-TEL] inbound: -1056 bytes (heap=123120 pin=481 bma=130 phl=102 lt=0 revr=0)
-21-05:40:54.760 [VRB] [HEAP-TEL] jobs: 580 bytes (heap=124512)
-21-05:40:54.854 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=130 phl=100)
-21-05:40:54.859 [VRB] [HEAP-TEL] inbound: -1036 bytes (heap=123124 pin=482 bma=130 phl=102 lt=0 revr=0)
-21-05:40:54.985 [VRB] [HEAP-TEL] boundary: -768 bytes (bma=132 phl=102)
-21-05:40:54.990 [VRB] [HEAP-TEL] inbound: -1200 bytes (heap=122384 pin=483 bma=132 phl=104 lt=0 revr=0)
-21-05:40:55.013 [VRB] [HEAP-TEL] jobs: 1132 bytes (heap=124328)
-21-05:40:55.033 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=130 phl=100)
-21-05:40:55.038 [VRB] [HEAP-TEL] inbound: -1028 bytes (heap=123156 pin=484 bma=130 phl=102 lt=0 revr=0)
-21-05:40:55.278 [VRB] [HEAP-TEL] jobs: 572 bytes (heap=124332)
-21-05:40:55.833 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=130 phl=100)
-21-05:40:55.837 [VRB] [HEAP-TEL] inbound: -1204 bytes (heap=122776 pin=485 bma=130 phl=102 lt=0 revr=0)
-21-05:40:56.046 [VRB] [HEAP-TEL] jobs: 592 bytes (heap=122596)
-21-05:40:57.031 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=130 phl=100)
-21-05:40:57.036 [VRB] [HEAP-TEL] inbound: -1040 bytes (heap=122788 pin=486 bma=130 phl=102 lt=0 revr=0)
-21-05:40:57.080 [VRB] [HEAP-TEL] jobs: 584 bytes (heap=124184)
-21-05:40:57.110 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=130 phl=100)
-21-05:40:57.115 [VRB] [HEAP-TEL] inbound: -1200 bytes (heap=122840 pin=487 bma=130 phl=102 lt=0 revr=0)
-21-05:40:57.349 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=132 phl=102)
-21-05:40:57.355 [VRB] [HEAP-TEL] inbound: -1196 bytes (heap=121888 pin=488 bma=132 phl=104 lt=0 revr=0)
-21-05:40:57.360 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=134 phl=104)
-21-05:40:57.365 [VRB] [HEAP-TEL] inbound: -1200 bytes (heap=121148 pin=489 bma=134 phl=106 lt=0 revr=0)
-21-05:40:57.367 [VRB] [HEAP-TEL] jobs: 1752 bytes (heap=123720)
-21-05:40:57.381 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=130 phl=100)
-21-05:40:57.385 [VRB] [HEAP-TEL] inbound: -1180 bytes (heap=122188 pin=490 bma=130 phl=102 lt=0 revr=0)
-21-05:40:57.440 [VRB] [HEAP-TEL] boundary: -556 bytes (bma=132 phl=102)
-21-05:40:57.446 [VRB] [HEAP-TEL] inbound: -980 bytes (heap=121460 pin=491 bma=132 phl=104 lt=0 revr=0)
-21-05:40:57.546 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=134 phl=104)
-21-05:40:57.551 [VRB] [HEAP-TEL] inbound: -1172 bytes (heap=120956 pin=492 bma=134 phl=106 lt=0 revr=0)
-21-05:40:57.561 [VRB] [HEAP-TEL] boundary: -776 bytes (bma=136 phl=106)
-21-05:40:57.566 [VRB] [HEAP-TEL] inbound: -1196 bytes (heap=119996 pin=493 bma=136 phl=108 lt=0 revr=0)
-21-05:40:57.609 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=138 phl=108)
-21-05:40:57.614 [VRB] [HEAP-TEL] inbound: -1180 bytes (heap=119280 pin=494 bma=138 phl=110 lt=0 revr=0)
-21-05:40:57.618 [VRB] [HEAP-TEL] jobs: 2912 bytes (heap=123020)
-21-05:40:57.749 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=130 phl=100)
-21-05:40:57.755 [VRB] [HEAP-TEL] inbound: -1208 bytes (heap=121460 pin=495 bma=130 phl=102 lt=0 revr=0)
-21-05:40:57.759 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=132 phl=102)
-21-05:40:57.764 [VRB] [HEAP-TEL] inbound: -1188 bytes (heap=120772 pin=496 bma=132 phl=104 lt=0 revr=0)
-21-05:40:57.870 [VRB] [HEAP-TEL] jobs: 1156 bytes (heap=122740)
-21-05:40:57.955 [VRB] [HEAP-TEL] boundary: -744 bytes (bma=130 phl=100)
-21-05:40:57.961 [VRB] [HEAP-TEL] inbound: -1212 bytes (heap=120968 pin=497 bma=130 phl=102 lt=0 revr=0)
-21-05:40:57.965 [VRB] [HEAP-TEL] boundary: -772 bytes (bma=132 phl=102)
-21-05:40:57.970 [VRB] [HEAP-TEL] inbound: -1188 bytes (heap=120440 pin=498 bma=132 phl=104 lt=0 revr=0)
-21-05:40:57.974 [VRB] [HEAP-TEL] boundary: -780 bytes (bma=134 phl=104)
-21-05:40:57.979 [VRB] [HEAP-TEL] inbound: -1240 bytes (heap=119700 pin=499 bma=134 phl=106 lt=0 revr=0)
-[TcpIF] Connecting to rns.beleth.net:4242 (cached IP)...
-[TcpIF] Cached IP failed, retrying with DNS
-[TcpIF] Connecting to rns.beleth.net:4242 (DNS)...
-[TcpIF] Resolved rns.beleth.net -> 129.213.74.184
-[TcpIF] Failed to connect to rns.beleth.net:4242 (attempt 4, next retry in 120s)
-21-05:41:09.999 [VRB] [HEAP-TEL] jobs: 1748 bytes (heap=121956)
-21-05:41:10.004 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=130 phl=100)
-21-05:41:10.008 [VRB] [HEAP-TEL] inbound: -1044 bytes (heap=121040 pin=500 bma=130 phl=102 lt=0 revr=0)
-21-05:41:10.013 [VRB] [HEAP-TEL] boundary: -776 bytes (bma=132 phl=102)
-21-05:41:10.018 [VRB] [HEAP-TEL] inbound: -1052 bytes (heap=120448 pin=501 bma=132 phl=104 lt=0 revr=0)
-21-05:41:10.022 [VRB] [HEAP-TEL] boundary: -772 bytes (bma=134 phl=104)
-21-05:41:10.027 [VRB] [HEAP-TEL] inbound: -1220 bytes (heap=119692 pin=502 bma=134 phl=106 lt=0 revr=0)
-21-05:41:10.031 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=136 phl=106)
-21-05:41:10.036 [VRB] [HEAP-TEL] inbound: -1188 bytes (heap=118968 pin=503 bma=136 phl=108 lt=0 revr=0)
-21-05:41:10.040 [VRB] [HEAP-TEL] boundary: -768 bytes (bma=138 phl=108)
-21-05:41:10.045 [VRB] [HEAP-TEL] inbound: -1188 bytes (heap=118248 pin=504 bma=138 phl=110 lt=0 revr=0)
-21-05:41:10.049 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=140 phl=110)
-21-05:41:10.054 [VRB] [HEAP-TEL] inbound: -1188 bytes (heap=117520 pin=505 bma=140 phl=112 lt=0 revr=0)
-21-05:41:10.115 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=142 phl=112)
-21-05:41:10.120 [VRB] [HEAP-TEL] inbound: -1192 bytes (heap=116596 pin=506 bma=142 phl=114 lt=0 revr=0)
-21-05:41:10.261 [VRB] [HEAP-TEL] jobs: 4000 bytes (heap=121432)
-21-05:41:13.826 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=130 phl=100)
-21-05:41:13.830 [VRB] [HEAP-TEL] inbound: -1168 bytes (heap=120120 pin=507 bma=130 phl=102 lt=0 revr=0)
-21-05:41:13.835 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=132 phl=102)
-21-05:41:13.840 [VRB] [HEAP-TEL] inbound: -1172 bytes (heap=119408 pin=508 bma=132 phl=104 lt=0 revr=0)
-21-05:41:13.844 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=134 phl=104)
-21-05:41:13.849 [VRB] [HEAP-TEL] inbound: -1200 bytes (heap=118668 pin=509 bma=134 phl=106 lt=0 revr=0)
-21-05:41:13.853 [VRB] [HEAP-TEL] boundary: -780 bytes (bma=136 phl=106)
-21-05:41:13.858 [VRB] [HEAP-TEL] inbound: -1240 bytes (heap=117888 pin=510 bma=136 phl=108 lt=0 revr=0)
-21-05:41:13.862 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=138 phl=108)
-21-05:41:13.867 [VRB] [HEAP-TEL] inbound: -1180 bytes (heap=117172 pin=511 bma=138 phl=110 lt=0 revr=0)
-21-05:41:13.871 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=140 phl=110)
-21-05:41:13.875 [VRB] [HEAP-TEL] inbound: -1176 bytes (heap=116456 pin=512 bma=140 phl=112 lt=0 revr=0)
-21-05:41:13.879 [VRB] [HEAP-TEL] boundary: -780 bytes (bma=142 phl=112)
-21-05:41:13.884 [VRB] [HEAP-TEL] inbound: -1204 bytes (heap=115712 pin=513 bma=142 phl=114 lt=0 revr=0)
-21-05:41:13.918 [VRB] [HEAP-TEL] jobs: 4100 bytes (heap=120276)
-21-05:41:14.139 [VRB] [HEAP-TEL] boundary: -744 bytes (bma=130 phl=100)
-21-05:41:14.144 [VRB] [HEAP-TEL] inbound: -744 bytes (heap=118904 pin=514 bma=130 phl=102 lt=0 revr=0)
-21-05:41:14.148 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=132 phl=102)
-21-05:41:14.153 [VRB] [HEAP-TEL] inbound: -1036 bytes (heap=118320 pin=515 bma=132 phl=104 lt=0 revr=0)
-21-05:41:14.157 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=134 phl=104)
-21-05:41:14.161 [VRB] [HEAP-TEL] inbound: -1172 bytes (heap=117608 pin=516 bma=134 phl=106 lt=0 revr=0)
-21-05:41:14.165 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=136 phl=106)
-21-05:41:14.170 [VRB] [HEAP-TEL] inbound: -1200 bytes (heap=116868 pin=517 bma=136 phl=108 lt=0 revr=0)
-21-05:41:14.174 [VRB] [HEAP-TEL] boundary: -776 bytes (bma=138 phl=108)
-21-05:41:14.179 [VRB] [HEAP-TEL] inbound: -1224 bytes (heap=116104 pin=518 bma=138 phl=110 lt=0 revr=0)
-21-05:41:14.183 [VRB] [HEAP-TEL] boundary: -768 bytes (bma=140 phl=110)
-21-05:41:14.188 [VRB] [HEAP-TEL] inbound: -1036 bytes (heap=115532 pin=519 bma=140 phl=112 lt=0 revr=0)
-21-05:41:14.192 [VRB] [HEAP-TEL] boundary: -616 bytes (bma=142 phl=112)
-21-05:41:14.197 [VRB] [HEAP-TEL] inbound: -880 bytes (heap=114968 pin=520 bma=142 phl=114 lt=0 revr=0)
-21-05:41:14.201 [VRB] [HEAP-TEL] boundary: -772 bytes (bma=144 phl=114)
-21-05:41:14.206 [VRB] [HEAP-TEL] inbound: -1036 bytes (heap=114392 pin=521 bma=144 phl=116 lt=0 revr=0)
-21-05:41:14.210 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=146 phl=116)
-21-05:41:14.215 [VRB] [HEAP-TEL] inbound: -1176 bytes (heap=113676 pin=522 bma=146 phl=118 lt=0 revr=0)
-21-05:41:14.219 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=148 phl=118)
-21-05:41:14.224 [VRB] [HEAP-TEL] inbound: -1028 bytes (heap=113108 pin=523 bma=148 phl=120 lt=0 revr=0)
-21-05:41:14.228 [VRB] [HEAP-TEL] boundary: -772 bytes (bma=150 phl=120)
-21-05:41:14.233 [VRB] [HEAP-TEL] inbound: -1196 bytes (heap=112372 pin=524 bma=150 phl=122 lt=0 revr=0)
-21-05:41:14.245 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=152 phl=122)
-21-05:41:14.250 [VRB] [HEAP-TEL] inbound: -1032 bytes (heap=111800 pin=527 bma=152 phl=124 lt=0 revr=0)
-21-05:41:14.254 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=154 phl=124)
-21-05:41:14.259 [VRB] [HEAP-TEL] inbound: -1172 bytes (heap=111088 pin=528 bma=154 phl=126 lt=0 revr=0)
-21-05:41:14.263 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=156 phl=126)
-21-05:41:14.268 [VRB] [HEAP-TEL] inbound: -1024 bytes (heap=110528 pin=529 bma=156 phl=128 lt=0 revr=0)
-21-05:41:14.272 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=158 phl=128)
-21-05:41:14.277 [VRB] [HEAP-TEL] inbound: -1184 bytes (heap=109808 pin=530 bma=158 phl=130 lt=0 revr=0)
-21-05:41:14.280 [VRB] [HEAP-TEL] jobs: 8600 bytes (heap=119228)
-21-05:41:14.340 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=130 phl=100)
-21-05:41:14.345 [VRB] [HEAP-TEL] inbound: -1016 bytes (heap=117780 pin=531 bma=130 phl=102 lt=0 revr=0)
-21-05:41:14.350 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=132 phl=102)
-21-05:41:14.355 [VRB] [HEAP-TEL] inbound: -1020 bytes (heap=117220 pin=532 bma=132 phl=104 lt=0 revr=0)
-21-05:41:14.364 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=134 phl=104)
-21-05:41:14.369 [VRB] [HEAP-TEL] inbound: -1020 bytes (heap=116660 pin=534 bma=134 phl=106 lt=0 revr=0)
-21-05:41:14.373 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=136 phl=106)
-21-05:41:14.378 [VRB] [HEAP-TEL] inbound: -1168 bytes (heap=115948 pin=535 bma=136 phl=108 lt=0 revr=0)
-21-05:41:14.382 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=138 phl=108)
-21-05:41:14.387 [VRB] [HEAP-TEL] inbound: -1196 bytes (heap=115212 pin=536 bma=138 phl=110 lt=0 revr=0)
-21-05:41:14.391 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=140 phl=110)
-21-05:41:14.396 [VRB] [HEAP-TEL] inbound: -1208 bytes (heap=114464 pin=537 bma=140 phl=112 lt=0 revr=0)
-21-05:41:14.400 [VRB] [HEAP-TEL] boundary: -788 bytes (bma=142 phl=112)
-21-05:41:14.405 [VRB] [HEAP-TEL] inbound: -1232 bytes (heap=113696 pin=538 bma=142 phl=114 lt=0 revr=0)
-21-05:41:14.409 [VRB] [HEAP-TEL] boundary: -780 bytes (bma=144 phl=114)
-21-05:41:14.414 [VRB] [HEAP-TEL] inbound: -1228 bytes (heap=112932 pin=539 bma=144 phl=116 lt=0 revr=0)
-21-05:41:14.418 [VRB] [HEAP-TEL] boundary: -780 bytes (bma=146 phl=116)
-21-05:41:14.423 [VRB] [HEAP-TEL] inbound: -1212 bytes (heap=112200 pin=540 bma=146 phl=118 lt=0 revr=0)
-21-05:41:14.427 [VRB] [HEAP-TEL] boundary: -772 bytes (bma=148 phl=118)
-21-05:41:14.432 [VRB] [HEAP-TEL] inbound: -1212 bytes (heap=111460 pin=541 bma=148 phl=120 lt=0 revr=0)
-21-05:41:14.436 [VRB] [HEAP-TEL] boundary: -780 bytes (bma=150 phl=120)
-21-05:41:14.441 [VRB] [HEAP-TEL] inbound: -1204 bytes (heap=110728 pin=542 bma=150 phl=122 lt=0 revr=0)
-21-05:41:14.445 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=152 phl=122)
-21-05:41:14.450 [VRB] [HEAP-TEL] inbound: -1040 bytes (heap=110148 pin=543 bma=152 phl=124 lt=0 revr=0)
-21-05:41:14.454 [VRB] [HEAP-TEL] boundary: -776 bytes (bma=154 phl=124)
-21-05:41:14.459 [VRB] [HEAP-TEL] inbound: -1208 bytes (heap=109404 pin=544 bma=154 phl=126 lt=0 revr=0)
-21-05:41:14.463 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=156 phl=126)
-21-05:41:14.468 [VRB] [HEAP-TEL] inbound: -1184 bytes (heap=108684 pin=545 bma=156 phl=128 lt=0 revr=0)
-21-05:41:14.472 [VRB] [HEAP-TEL] boundary: -772 bytes (bma=158 phl=128)
-21-05:41:14.477 [VRB] [HEAP-TEL] inbound: -1192 bytes (heap=107956 pin=546 bma=158 phl=130 lt=0 revr=0)
-21-05:41:14.481 [VRB] [HEAP-TEL] boundary: -780 bytes (bma=160 phl=130)
-21-05:41:14.486 [VRB] [HEAP-TEL] inbound: -1196 bytes (heap=107232 pin=547 bma=160 phl=132 lt=0 revr=0)
-21-05:41:14.492 [VRB] [HEAP-TEL] boundary: -772 bytes (bma=162 phl=132)
-21-05:41:14.498 [VRB] [HEAP-TEL] inbound: -1336 bytes (heap=106408 pin=548 bma=162 phl=134 lt=0 revr=0)
-21-05:41:14.506 [VRB] [HEAP-TEL] boundary: -780 bytes (bma=164 phl=134)
-21-05:41:14.512 [VRB] [HEAP-TEL] inbound: -1196 bytes (heap=105672 pin=550 bma=164 phl=136 lt=0 revr=0)
-21-05:41:14.516 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=166 phl=136)
-21-05:41:14.521 [VRB] [HEAP-TEL] inbound: -1172 bytes (heap=104972 pin=551 bma=166 phl=138 lt=0 revr=0)
-21-05:41:14.525 [VRB] [HEAP-TEL] boundary: -788 bytes (bma=168 phl=138)
-21-05:41:14.530 [VRB] [HEAP-TEL] inbound: -1052 bytes (heap=104380 pin=552 bma=168 phl=140 lt=0 revr=0)
-21-05:41:14.538 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=170 phl=140)
-21-05:41:14.543 [VRB] [HEAP-TEL] inbound: -1188 bytes (heap=103656 pin=554 bma=170 phl=142 lt=0 revr=0)
-21-05:41:14.547 [VRB] [HEAP-TEL] boundary: -780 bytes (bma=172 phl=142)
-21-05:41:14.552 [VRB] [HEAP-TEL] inbound: -1192 bytes (heap=102928 pin=555 bma=172 phl=144 lt=0 revr=0)
-21-05:41:14.556 [VRB] [HEAP-TEL] boundary: -768 bytes (bma=174 phl=144)
-21-05:41:14.561 [VRB] [HEAP-TEL] inbound: -1188 bytes (heap=102208 pin=556 bma=174 phl=146 lt=0 revr=0)
-21-05:41:14.565 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=176 phl=146)
-21-05:41:14.569 [VRB] [HEAP-TEL] inbound: -1176 bytes (heap=101500 pin=557 bma=176 phl=148 lt=0 revr=0)
-21-05:41:14.573 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=178 phl=148)
-21-05:41:14.578 [VRB] [HEAP-TEL] inbound: -1028 bytes (heap=100940 pin=558 bma=178 phl=150 lt=0 revr=0)
-21-05:41:14.582 [VRB] [HEAP-TEL] boundary: -772 bytes (bma=180 phl=150)
-21-05:41:14.587 [VRB] [HEAP-TEL] inbound: -1036 bytes (heap=100372 pin=559 bma=180 phl=152 lt=0 revr=0)
-21-05:41:14.591 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=182 phl=152)
-21-05:41:14.596 [VRB] [HEAP-TEL] inbound: -1180 bytes (heap=99660 pin=560 bma=182 phl=154 lt=0 revr=0)
-21-05:41:14.600 [VRB] [HEAP-TEL] boundary: -772 bytes (bma=184 phl=154)
-21-05:41:14.605 [VRB] [HEAP-TEL] inbound: -1036 bytes (heap=99088 pin=561 bma=184 phl=156 lt=0 revr=0)
-21-05:41:14.609 [VRB] [HEAP-TEL] boundary: -776 bytes (bma=186 phl=156)
-21-05:41:14.615 [VRB] [HEAP-TEL] inbound: -1640 bytes (heap=97908 pin=562 bma=186 phl=158 lt=0 revr=0)
-21-05:41:14.619 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=188 phl=158)
-21-05:41:14.624 [VRB] [HEAP-TEL] inbound: -1028 bytes (heap=97776 pin=563 bma=188 phl=160 lt=0 revr=0)
-21-05:41:14.628 [VRB] [HEAP-TEL] boundary: -772 bytes (bma=190 phl=160)
-21-05:41:14.633 [VRB] [HEAP-TEL] inbound: -1036 bytes (heap=97280 pin=564 bma=190 phl=162 lt=0 revr=0)
-21-05:41:14.637 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=192 phl=162)
-21-05:41:14.642 [VRB] [HEAP-TEL] inbound: -1176 bytes (heap=96564 pin=565 bma=192 phl=164 lt=0 revr=0)
-21-05:41:14.646 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=194 phl=164)
-21-05:41:14.651 [VRB] [HEAP-TEL] inbound: -1168 bytes (heap=95856 pin=566 bma=194 phl=166 lt=0 revr=0)
-21-05:41:14.655 [VRB] [HEAP-TEL] boundary: -768 bytes (bma=196 phl=166)
-21-05:41:14.660 [VRB] [HEAP-TEL] inbound: -1184 bytes (heap=95136 pin=567 bma=196 phl=168 lt=0 revr=0)
-21-05:41:14.664 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=198 phl=168)
-21-05:41:14.669 [VRB] [HEAP-TEL] inbound: -1184 bytes (heap=94416 pin=568 bma=198 phl=170 lt=0 revr=0)
-21-05:41:14.674 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=200 phl=170)
-21-05:41:14.679 [VRB] [HEAP-TEL] inbound: -1172 bytes (heap=93704 pin=569 bma=200 phl=172 lt=0 revr=0)
-21-05:41:14.683 [VRB] [HEAP-TEL] boundary: -780 bytes (bma=202 phl=172)
-21-05:41:14.688 [VRB] [HEAP-TEL] inbound: -1044 bytes (heap=93120 pin=570 bma=202 phl=174 lt=0 revr=0)
-21-05:41:14.697 [VRB] [HEAP-TEL] boundary: -780 bytes (bma=204 phl=174)
-21-05:41:14.702 [VRB] [HEAP-TEL] inbound: -1044 bytes (heap=92540 pin=572 bma=204 phl=176 lt=0 revr=0)
-21-05:41:14.706 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=206 phl=176)
-21-05:41:14.711 [VRB] [HEAP-TEL] inbound: -1180 bytes (heap=91820 pin=573 bma=206 phl=178 lt=0 revr=0)
-21-05:41:14.715 [VRB] [HEAP-TEL] boundary: -772 bytes (bma=208 phl=178)
-21-05:41:14.720 [VRB] [HEAP-TEL] inbound: -1184 bytes (heap=91096 pin=574 bma=208 phl=180 lt=0 revr=0)
-21-05:41:14.724 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=210 phl=180)
-21-05:41:14.729 [VRB] [HEAP-TEL] inbound: -1024 bytes (heap=90536 pin=575 bma=210 phl=182 lt=0 revr=0)
-21-05:41:14.733 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=212 phl=182)
-21-05:41:14.738 [VRB] [HEAP-TEL] inbound: -1028 bytes (heap=89972 pin=576 bma=212 phl=184 lt=0 revr=0)
-21-05:41:14.742 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=214 phl=184)
-21-05:41:14.746 [VRB] [HEAP-TEL] inbound: -1028 bytes (heap=89404 pin=577 bma=214 phl=186 lt=0 revr=0)
-21-05:41:14.750 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=216 phl=186)
-21-05:41:14.755 [VRB] [HEAP-TEL] inbound: -1180 bytes (heap=88684 pin=578 bma=216 phl=188 lt=0 revr=0)
-21-05:41:14.759 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=218 phl=188)
-21-05:41:14.764 [VRB] [HEAP-TEL] inbound: -1024 bytes (heap=88120 pin=579 bma=218 phl=190 lt=0 revr=0)
-21-05:41:14.768 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=220 phl=190)
-21-05:41:14.773 [VRB] [HEAP-TEL] inbound: -1180 bytes (heap=87400 pin=580 bma=220 phl=192 lt=0 revr=0)
-21-05:41:14.783 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=222 phl=192)
-21-05:41:14.788 [VRB] [HEAP-TEL] inbound: -1024 bytes (heap=86944 pin=582 bma=222 phl=194 lt=0 revr=0)
-21-05:41:14.792 [VRB] [HEAP-TEL] jobs: 26928 bytes (heap=114684)
-21-05:41:15.173 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=130 phl=100)
-21-05:41:15.177 [VRB] [HEAP-TEL] inbound: -1016 bytes (heap=113320 pin=584 bma=130 phl=102 lt=0 revr=0)
-21-05:41:15.208 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=132 phl=102)
-21-05:41:15.212 [VRB] [HEAP-TEL] inbound: -1016 bytes (heap=112756 pin=585 bma=132 phl=104 lt=0 revr=0)
-21-05:41:15.296 [VRB] [HEAP-TEL] jobs: 1140 bytes (heap=114716)
-21-05:41:15.361 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=130 phl=100)
-21-05:41:15.365 [VRB] [HEAP-TEL] inbound: -1016 bytes (heap=113556 pin=586 bma=130 phl=102 lt=0 revr=0)
-21-05:41:15.374 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=132 phl=102)
-21-05:41:15.377 [VRB] [HEAP-TEL] inbound: -1016 bytes (heap=113000 pin=587 bma=132 phl=104 lt=0 revr=0)
-21-05:41:15.548 [VRB] [HEAP-TEL] jobs: 1112 bytes (heap=114716)
-21-05:41:15.569 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=130 phl=100)
-21-05:41:15.574 [VRB] [HEAP-TEL] inbound: -1016 bytes (heap=113556 pin=588 bma=130 phl=102 lt=0 revr=0)
-21-05:41:15.595 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=132 phl=102)
-21-05:41:15.599 [VRB] [HEAP-TEL] inbound: -1164 bytes (heap=112644 pin=589 bma=132 phl=104 lt=0 revr=0)
-21-05:41:15.800 [VRB] [HEAP-TEL] jobs: 1128 bytes (heap=114584)
-21-05:41:15.874 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=130 phl=100)
-21-05:41:15.879 [VRB] [HEAP-TEL] inbound: -1164 bytes (heap=113068 pin=590 bma=130 phl=102 lt=0 revr=0)
-21-05:41:16.052 [VRB] [HEAP-TEL] jobs: 560 bytes (heap=114440)
-21-05:41:16.285 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=130 phl=100)
-21-05:41:16.290 [VRB] [HEAP-TEL] inbound: -1016 bytes (heap=113280 pin=591 bma=130 phl=102 lt=0 revr=0)
-21-05:41:16.303 [VRB] [HEAP-TEL] jobs: 580 bytes (heap=114464)
-21-05:41:17.108 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=130 phl=100)
-21-05:41:17.113 [VRB] [HEAP-TEL] inbound: -1168 bytes (heap=113152 pin=593 bma=130 phl=102 lt=0 revr=0)
-21-05:41:17.118 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=132 phl=102)
-21-05:41:17.123 [VRB] [HEAP-TEL] inbound: -1168 bytes (heap=112444 pin=594 bma=132 phl=104 lt=0 revr=0)
-21-05:41:17.314 [VRB] [HEAP-TEL] jobs: 1168 bytes (heap=114216)
-21-05:41:18.537 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=130 phl=100)
-21-05:41:18.541 [VRB] [HEAP-TEL] inbound: -1020 bytes (heap=112844 pin=597 bma=130 phl=102 lt=0 revr=0)
-21-05:41:18.612 [VRB] [HEAP-TEL] jobs: 560 bytes (heap=114216)
-21-05:41:19.687 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=130 phl=100)
-21-05:41:19.691 [VRB] [HEAP-TEL] inbound: -1024 bytes (heap=113048 pin=600 bma=130 phl=102 lt=0 revr=0)
-21-05:41:19.897 [VRB] [HEAP-TEL] jobs: 576 bytes (heap=114228)
-21-05:41:20.280 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=130 phl=100)
-21-05:41:20.284 [VRB] [HEAP-TEL] inbound: -1032 bytes (heap=112844 pin=601 bma=130 phl=102 lt=0 revr=0)
-21-05:41:20.414 [VRB] [HEAP-TEL] jobs: 584 bytes (heap=114240)
-21-05:41:21.543 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=130 phl=100)
-21-05:41:21.548 [VRB] [HEAP-TEL] inbound: -1180 bytes (heap=112708 pin=605 bma=130 phl=102 lt=0 revr=0)
-21-05:41:21.714 [VRB] [HEAP-TEL] jobs: 576 bytes (heap=114096)
-21-05:41:23.147 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=130 phl=100)
-21-05:41:23.151 [VRB] [HEAP-TEL] inbound: -1188 bytes (heap=112556 pin=606 bma=130 phl=102 lt=0 revr=0)
-21-05:41:23.262 [VRB] [HEAP-TEL] jobs: 572 bytes (heap=113940)
-21-05:41:23.351 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=130 phl=100)
-21-05:41:23.356 [VRB] [HEAP-TEL] inbound: -1200 bytes (heap=112388 pin=607 bma=130 phl=102 lt=0 revr=0)
-21-05:41:23.398 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=132 phl=102)
-21-05:41:23.403 [VRB] [HEAP-TEL] inbound: -832 bytes (heap=112004 pin=608 bma=132 phl=104 lt=0 revr=0)
-21-05:41:23.514 [VRB] [HEAP-TEL] jobs: 1148 bytes (heap=113760)
-21-05:41:23.866 [VRB] [HEAP-TEL] boundary: -768 bytes (bma=130 phl=100)
-21-05:41:23.870 [VRB] [HEAP-TEL] inbound: -1056 bytes (heap=112348 pin=612 bma=130 phl=102 lt=0 revr=0)
-21-05:41:23.897 [VRB] [HEAP-TEL] boundary: -788 bytes (bma=132 phl=102)
-21-05:41:23.903 [VRB] [HEAP-TEL] inbound: -1228 bytes (heap=111584 pin=613 bma=132 phl=104 lt=0 revr=0)
-21-05:41:24.033 [VRB] [HEAP-TEL] jobs: 1148 bytes (heap=113552)
-21-05:41:24.146 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=130 phl=100)
-21-05:41:24.151 [VRB] [HEAP-TEL] inbound: -1204 bytes (heap=111996 pin=614 bma=130 phl=102 lt=0 revr=0)
-21-05:41:24.299 [VRB] [HEAP-TEL] jobs: 592 bytes (heap=113400)
-21-05:41:24.682 [VRB] [HEAP-TEL] boundary: -780 bytes (bma=130 phl=100)
-21-05:41:24.686 [VRB] [HEAP-TEL] inbound: -1060 bytes (heap=111988 pin=615 bma=130 phl=102 lt=0 revr=0)
-21-05:41:25.199 [VRB] [HEAP-TEL] boundary: -800 bytes (bma=132 phl=102)
-21-05:41:25.204 [VRB] [HEAP-TEL] inbound: -1076 bytes (heap=111372 pin=618 bma=132 phl=104 lt=0 revr=0)
-21-05:41:25.209 [VRB] [HEAP-TEL] boundary: -792 bytes (bma=134 phl=104)
-21-05:41:25.214 [VRB] [HEAP-TEL] inbound: -1068 bytes (heap=110768 pin=619 bma=134 phl=106 lt=0 revr=0)
-21-05:41:25.334 [VRB] [HEAP-TEL] jobs: 1708 bytes (heap=113308)
-21-05:41:25.965 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=130 phl=100)
-21-05:41:25.970 [VRB] [HEAP-TEL] inbound: -1196 bytes (heap=111760 pin=623 bma=130 phl=102 lt=0 revr=0)
-21-05:41:26.103 [VRB] [HEAP-TEL] jobs: 596 bytes (heap=111584)
-21-05:41:28.378 [VRB] [HEAP-TEL] boundary: -808 bytes (bma=130 phl=100)
-21-05:41:28.382 [VRB] [HEAP-TEL] inbound: -1080 bytes (heap=111736 pin=625 bma=130 phl=102 lt=0 revr=0)
-21-05:41:28.433 [VRB] [HEAP-TEL] jobs: 588 bytes (heap=113136)
-21-05:41:28.780 [VRB] [HEAP-TEL] boundary: -788 bytes (bma=130 phl=100)
-21-05:41:28.785 [VRB] [HEAP-TEL] inbound: -1064 bytes (heap=111720 pin=626 bma=130 phl=102 lt=0 revr=0)
-21-05:41:28.950 [VRB] [HEAP-TEL] jobs: 572 bytes (heap=113108)
-21-05:41:29.091 [VRB] [HEAP-TEL] boundary: -768 bytes (bma=130 phl=100)
-21-05:41:29.095 [VRB] [HEAP-TEL] inbound: -1056 bytes (heap=111700 pin=627 bma=130 phl=102 lt=0 revr=0)
-21-05:41:29.202 [VRB] [HEAP-TEL] jobs: 580 bytes (heap=112888)
-21-05:41:31.139 [VRB] [HEAP-TEL] boundary: -780 bytes (bma=130 phl=100)
-21-05:41:31.144 [VRB] [HEAP-TEL] inbound: -1064 bytes (heap=111680 pin=629 bma=130 phl=102 lt=0 revr=0)
-21-05:41:31.273 [VRB] [HEAP-TEL] jobs: 588 bytes (heap=113084)
-21-05:41:32.058 [VRB] [HEAP-TEL] boundary: -776 bytes (bma=130 phl=100)
-21-05:41:32.062 [VRB] [HEAP-TEL] inbound: -1052 bytes (heap=111680 pin=630 bma=130 phl=102 lt=0 revr=0)
-21-05:41:32.065 [VRB] [HEAP-TEL] jobs: 576 bytes (heap=113072)
-21-05:41:33.287 [VRB] [HEAP-TEL] boundary: -772 bytes (bma=130 phl=100)
-21-05:41:33.291 [VRB] [HEAP-TEL] inbound: -1040 bytes (heap=111680 pin=631 bma=130 phl=102 lt=0 revr=0)
-21-05:41:33.338 [VRB] [HEAP-TEL] jobs: 576 bytes (heap=113068)
-21-05:41:33.914 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=130 phl=100)
-21-05:41:33.919 [VRB] [HEAP-TEL] inbound: -1028 bytes (heap=111688 pin=633 bma=130 phl=102 lt=0 revr=0)
-21-05:41:33.962 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=132 phl=102)
-21-05:41:33.966 [VRB] [HEAP-TEL] inbound: -1032 bytes (heap=111324 pin=634 bma=132 phl=104 lt=0 revr=0)
-21-05:41:34.129 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=134 phl=104)
-21-05:41:34.134 [VRB] [HEAP-TEL] inbound: -1188 bytes (heap=110380 pin=635 bma=134 phl=106 lt=0 revr=0)
-21-05:41:34.136 [VRB] [HEAP-TEL] jobs: 1716 bytes (heap=112928)
-21-05:41:34.313 [VRB] [HEAP-TEL] boundary: -792 bytes (bma=130 phl=100)
-21-05:41:34.318 [VRB] [HEAP-TEL] inbound: -1068 bytes (heap=111460 pin=637 bma=130 phl=102 lt=0 revr=0)
-21-05:41:34.323 [VRB] [HEAP-TEL] boundary: -776 bytes (bma=132 phl=102)
-21-05:41:34.328 [VRB] [HEAP-TEL] inbound: -1192 bytes (heap=110780 pin=638 bma=132 phl=104 lt=0 revr=0)
-21-05:41:34.388 [VRB] [HEAP-TEL] jobs: 1156 bytes (heap=112752)
-21-05:41:34.436 [VRB] [HEAP-TEL] boundary: -800 bytes (bma=130 phl=100)
-21-05:41:34.441 [VRB] [HEAP-TEL] inbound: -1068 bytes (heap=111332 pin=639 bma=130 phl=102 lt=0 revr=0)
-21-05:41:34.616 [VRB] [HEAP-TEL] boundary: -796 bytes (bma=132 phl=102)
-21-05:41:34.621 [VRB] [HEAP-TEL] inbound: -1064 bytes (heap=110940 pin=640 bma=132 phl=104 lt=0 revr=0)
-21-05:41:34.655 [VRB] [HEAP-TEL] jobs: 1156 bytes (heap=112724)
-21-05:41:35.023 [VRB] [HEAP-TEL] boundary: -784 bytes (bma=130 phl=100)
-21-05:41:35.027 [VRB] [HEAP-TEL] inbound: -1048 bytes (heap=111532 pin=641 bma=130 phl=102 lt=0 revr=0)
-21-05:41:35.058 [VRB] [HEAP-TEL] boundary: -784 bytes (bma=132 phl=102)
-21-05:41:35.062 [VRB] [HEAP-TEL] inbound: -1224 bytes (heap=110548 pin=642 bma=132 phl=104 lt=0 revr=0)
-21-05:41:35.171 [VRB] [HEAP-TEL] jobs: 1124 bytes (heap=112536)
-21-05:41:35.233 [VRB] [HEAP-TEL] boundary: -768 bytes (bma=130 phl=100)
-21-05:41:35.238 [VRB] [HEAP-TEL] inbound: -828 bytes (heap=111128 pin=643 bma=130 phl=102 lt=0 revr=0)
-21-05:41:35.243 [VRB] [HEAP-TEL] boundary: -772 bytes (bma=132 phl=102)
-21-05:41:35.248 [VRB] [HEAP-TEL] inbound: -1196 bytes (heap=110404 pin=644 bma=132 phl=104 lt=0 revr=0)
-21-05:41:35.263 [VRB] [HEAP-TEL] boundary: -780 bytes (bma=134 phl=104)
-21-05:41:35.267 [VRB] [HEAP-TEL] inbound: -1064 bytes (heap=109800 pin=645 bma=134 phl=106 lt=0 revr=0)
-21-05:41:35.346 [VRB] [HEAP-TEL] boundary: -768 bytes (bma=136 phl=106)
-21-05:41:35.350 [VRB] [HEAP-TEL] inbound: -1032 bytes (heap=109228 pin=646 bma=136 phl=108 lt=0 revr=0)
-21-05:41:35.423 [VRB] [HEAP-TEL] jobs: 2288 bytes (heap=112208)
-21-05:41:35.436 [VRB] [HEAP-TEL] boundary: -748 bytes (bma=130 phl=100)
-21-05:41:35.441 [VRB] [HEAP-TEL] inbound: -1016 bytes (heap=111188 pin=647 bma=130 phl=102 lt=0 revr=0)
-21-05:41:35.468 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=132 phl=102)
-21-05:41:35.473 [VRB] [HEAP-TEL] inbound: -1172 bytes (heap=110240 pin=648 bma=132 phl=104 lt=0 revr=0)
-21-05:41:35.638 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=134 phl=104)
-21-05:41:35.643 [VRB] [HEAP-TEL] inbound: -1036 bytes (heap=109660 pin=649 bma=134 phl=106 lt=0 revr=0)
-21-05:41:35.691 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=136 phl=106)
-21-05:41:35.695 [VRB] [HEAP-TEL] inbound: -1028 bytes (heap=109088 pin=650 bma=136 phl=108 lt=0 revr=0)
-21-05:41:35.697 [VRB] [HEAP-TEL] jobs: 2284 bytes (heap=112204)
-21-05:41:35.863 [VRB] [HEAP-TEL] boundary: -776 bytes (bma=130 phl=100)
-21-05:41:35.867 [VRB] [HEAP-TEL] inbound: -1040 bytes (heap=110800 pin=651 bma=130 phl=102 lt=0 revr=0)
-21-05:41:35.945 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=132 phl=102)
-21-05:41:35.949 [VRB] [HEAP-TEL] inbound: -1036 bytes (heap=110228 pin=652 bma=132 phl=104 lt=0 revr=0)
-21-05:41:35.952 [VRB] [HEAP-TEL] jobs: 1148 bytes (heap=112196)
-21-05:41:36.252 [VRB] [HEAP-TEL] boundary: -776 bytes (bma=130 phl=100)
-21-05:41:36.257 [VRB] [HEAP-TEL] inbound: -1212 bytes (heap=110632 pin=654 bma=130 phl=102 lt=0 revr=0)
-21-05:41:36.286 [VRB] [HEAP-TEL] boundary: -548 bytes (bma=132 phl=102)
-21-05:41:36.290 [VRB] [HEAP-TEL] inbound: -832 bytes (heap=110280 pin=655 bma=132 phl=104 lt=0 revr=0)
-21-05:41:36.456 [VRB] [HEAP-TEL] jobs: 1132 bytes (heap=112012)
-21-05:41:36.464 [VRB] [HEAP-TEL] boundary: -552 bytes (bma=130 phl=100)
-21-05:41:36.468 [VRB] [HEAP-TEL] inbound: -824 bytes (heap=110616 pin=656 bma=130 phl=102 lt=0 revr=0)
-21-05:41:36.473 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=132 phl=102)
-21-05:41:36.478 [VRB] [HEAP-TEL] inbound: -1192 bytes (heap=109880 pin=657 bma=132 phl=104 lt=0 revr=0)
-21-05:41:36.668 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=134 phl=104)
-21-05:41:36.672 [VRB] [HEAP-TEL] inbound: -1020 bytes (heap=109328 pin=658 bma=134 phl=106 lt=0 revr=0)
-21-05:41:36.684 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=136 phl=106)
-21-05:41:36.689 [VRB] [HEAP-TEL] inbound: -1032 bytes (heap=108752 pin=659 bma=136 phl=108 lt=0 revr=0)
-21-05:41:36.724 [VRB] [HEAP-TEL] jobs: 2292 bytes (heap=111856)
-21-05:41:36.976 [VRB] [HEAP-TEL] boundary: -748 bytes (bma=130 phl=100)
-21-05:41:36.980 [VRB] [HEAP-TEL] inbound: -1024 bytes (heap=110688 pin=660 bma=130 phl=102 lt=0 revr=0)
-21-05:41:36.983 [VRB] [HEAP-TEL] jobs: 556 bytes (heap=111844)
-21-05:41:38.417 [VRB] [HEAP-TEL] boundary: -748 bytes (bma=130 phl=100)
-21-05:41:38.421 [VRB] [HEAP-TEL] inbound: -1012 bytes (heap=110476 pin=662 bma=130 phl=102 lt=0 revr=0)
-21-05:41:39.324 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=132 phl=102)
-21-05:41:39.329 [VRB] [HEAP-TEL] inbound: -1024 bytes (heap=109912 pin=664 bma=132 phl=104 lt=0 revr=0)
-21-05:41:39.566 [VRB] [HEAP-TEL] jobs: 1124 bytes (heap=111844)
-21-05:41:39.663 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=130 phl=100)
-21-05:41:39.667 [VRB] [HEAP-TEL] inbound: -1036 bytes (heap=110456 pin=665 bma=130 phl=102 lt=0 revr=0)
-21-05:41:39.833 [VRB] [HEAP-TEL] jobs: 564 bytes (heap=111828)
-21-05:41:40.351 [VRB] [HEAP-TEL] boundary: -748 bytes (bma=130 phl=100)
-21-05:41:40.356 [VRB] [HEAP-TEL] inbound: -1028 bytes (heap=110448 pin=666 bma=130 phl=102 lt=0 revr=0)
-21-05:41:40.361 [VRB] [HEAP-TEL] boundary: -748 bytes (bma=132 phl=102)
-21-05:41:40.366 [VRB] [HEAP-TEL] inbound: -1160 bytes (heap=109744 pin=667 bma=132 phl=104 lt=0 revr=0)
-21-05:41:40.368 [VRB] [HEAP-TEL] jobs: 1132 bytes (heap=111684)
-21-05:41:40.765 [VRB] [HEAP-TEL] boundary: -748 bytes (bma=130 phl=100)
-21-05:41:40.769 [VRB] [HEAP-TEL] inbound: -1016 bytes (heap=110108 pin=668 bma=130 phl=102 lt=0 revr=0)
-21-05:41:41.682 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=132 phl=102)
-21-05:41:41.687 [VRB] [HEAP-TEL] inbound: -1176 bytes (heap=109596 pin=670 bma=132 phl=104 lt=0 revr=0)
-21-05:41:42.067 [VRB] [HEAP-TEL] jobs: 1132 bytes (heap=111536)
-21-05:41:42.381 [VRB] mem: 111536 (39%) [-15084] flash: 3477504 (98%) [0] paths: 3 dsts: 5 revr: 0 annc: 0 held: 0
-21-05:41:42.382 [VRB] preqs: 352 dpreqs: 0 ppreqs: 0 dprt: 32 cdsts: 2 chshs: 2
-21-05:41:42.383 [VRB] phl: 100 rcp: 0 lt: 0 pl: 0 al: 0 tun: 0
-21-05:41:42.384 [VRB] bla: 0 bma: 128
-21-05:41:42.385 [VRB] pin: 670 pout: 593 padd: 0 dpr: 2 ikd: 0 ia: 0
-
-21-05:41:42.500 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=130 phl=100)
-21-05:41:42.506 [VRB] [HEAP-TEL] inbound: -1244 bytes (heap=109940 pin=671 bma=130 phl=102 lt=0 revr=0)
-21-05:41:42.510 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=132 phl=102)
-21-05:41:42.515 [VRB] [HEAP-TEL] inbound: -1184 bytes (heap=109260 pin=672 bma=132 phl=104 lt=0 revr=0)
-21-05:41:42.637 [VRB] [HEAP-TEL] jobs: 1152 bytes (heap=111220)
-21-05:41:42.705 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=130 phl=100)
-21-05:41:42.709 [VRB] [HEAP-TEL] inbound: -1040 bytes (heap=109828 pin=673 bma=130 phl=102 lt=0 revr=0)
-21-05:41:42.889 [VRB] [HEAP-TEL] jobs: 592 bytes (heap=111228)
-21-05:41:43.528 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=130 phl=100)
-21-05:41:43.532 [VRB] [HEAP-TEL] inbound: -1172 bytes (heap=109704 pin=674 bma=130 phl=102 lt=0 revr=0)
-21-05:41:43.650 [VRB] [HEAP-TEL] jobs: 572 bytes (heap=111084)
-21-05:41:44.239 [VRB] [HEAP-TEL] boundary: -784 bytes (bma=130 phl=100)
-21-05:41:44.244 [VRB] [HEAP-TEL] inbound: -1056 bytes (heap=109676 pin=675 bma=130 phl=102 lt=0 revr=0)
-21-05:41:44.418 [VRB] [HEAP-TEL] jobs: 572 bytes (heap=111056)
-21-05:41:44.685 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=130 phl=100)
-21-05:41:44.690 [VRB] [HEAP-TEL] inbound: -1168 bytes (heap=109536 pin=676 bma=130 phl=102 lt=0 revr=0)
-21-05:41:44.695 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=132 phl=102)
-21-05:41:44.700 [VRB] [HEAP-TEL] inbound: -1048 bytes (heap=108944 pin=677 bma=132 phl=104 lt=0 revr=0)
-21-05:41:44.702 [VRB] [HEAP-TEL] jobs: 1136 bytes (heap=110888)
-21-05:41:45.572 [VRB] [HEAP-TEL] boundary: -748 bytes (bma=130 phl=100)
-21-05:41:45.576 [VRB] [HEAP-TEL] inbound: -1036 bytes (heap=109500 pin=678 bma=130 phl=102 lt=0 revr=0)
-21-05:41:45.614 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=132 phl=102)
-21-05:41:45.618 [VRB] [HEAP-TEL] inbound: -1032 bytes (heap=108924 pin=679 bma=132 phl=104 lt=0 revr=0)
-21-05:41:45.676 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=134 phl=104)
-21-05:41:45.682 [VRB] [HEAP-TEL] inbound: -1048 bytes (heap=108332 pin=680 bma=134 phl=106 lt=0 revr=0)
-21-05:41:45.716 [VRB] [HEAP-TEL] jobs: 1748 bytes (heap=110888)
-21-05:41:45.892 [VRB] [HEAP-TEL] boundary: -748 bytes (bma=130 phl=100)
-21-05:41:45.896 [VRB] [HEAP-TEL] inbound: -1016 bytes (heap=109520 pin=681 bma=130 phl=102 lt=0 revr=0)
-21-05:41:45.968 [VRB] [HEAP-TEL] jobs: 568 bytes (heap=110900)
-21-05:41:45.989 [VRB] [HEAP-TEL] boundary: -748 bytes (bma=130 phl=100)
-21-05:41:45.994 [VRB] [HEAP-TEL] inbound: -896 bytes (heap=109164 pin=682 bma=130 phl=102 lt=0 revr=0)
-21-05:41:46.498 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=132 phl=102)
-21-05:41:46.502 [VRB] [HEAP-TEL] inbound: -1028 bytes (heap=108800 pin=685 bma=132 phl=104 lt=0 revr=0)
-21-05:41:46.749 [VRB] [HEAP-TEL] jobs: 1160 bytes (heap=110768)
-21-05:41:47.213 [VRB] [HEAP-TEL] boundary: -748 bytes (bma=130 phl=100)
-21-05:41:47.218 [VRB] [HEAP-TEL] inbound: -812 bytes (heap=109396 pin=686 bma=130 phl=102 lt=0 revr=0)
-21-05:41:47.223 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=132 phl=102)
-21-05:41:47.228 [VRB] [HEAP-TEL] inbound: -1052 bytes (heap=108800 pin=687 bma=132 phl=104 lt=0 revr=0)
-21-05:41:47.266 [VRB] [HEAP-TEL] jobs: 1192 bytes (heap=110660)
-21-05:41:47.445 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=130 phl=100)
-21-05:41:47.449 [VRB] [HEAP-TEL] inbound: -1188 bytes (heap=109260 pin=689 bma=130 phl=102 lt=0 revr=0)
-21-05:41:47.518 [VRB] [HEAP-TEL] jobs: 580 bytes (heap=110648)
-21-05:41:48.359 [VRB] [HEAP-TEL] boundary: -768 bytes (bma=130 phl=100)
-21-05:41:48.363 [VRB] [HEAP-TEL] inbound: -1056 bytes (heap=109448 pin=691 bma=130 phl=102 lt=0 revr=0)
-21-05:41:48.550 [VRB] [HEAP-TEL] jobs: 600 bytes (heap=110652)
-21-05:41:49.567 [VRB] [HEAP-TEL] boundary: -772 bytes (bma=130 phl=100)
-21-05:41:49.571 [VRB] [HEAP-TEL] inbound: -1056 bytes (heap=109452 pin=692 bma=130 phl=102 lt=0 revr=0)
-21-05:41:49.584 [VRB] [HEAP-TEL] jobs: 588 bytes (heap=110644)
-21-05:41:50.197 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=130 phl=100)
-21-05:41:50.201 [VRB] [HEAP-TEL] inbound: -1204 bytes (heap=109088 pin=693 bma=130 phl=102 lt=0 revr=0)
-21-05:41:50.206 [VRB] [HEAP-TEL] boundary: -820 bytes (bma=132 phl=102)
-21-05:41:50.211 [VRB] [HEAP-TEL] inbound: -1272 bytes (heap=108276 pin=694 bma=132 phl=104 lt=0 revr=0)
-21-05:41:50.367 [VRB] [HEAP-TEL] jobs: 1164 bytes (heap=110268)
-21-05:41:50.911 [VRB] [HEAP-TEL] boundary: -760 bytes (bma=130 phl=100)
-21-05:41:50.916 [VRB] [HEAP-TEL] inbound: -1040 bytes (heap=108876 pin=696 bma=130 phl=102 lt=0 revr=0)
-21-05:41:50.942 [VRB] [HEAP-TEL] boundary: -776 bytes (bma=132 phl=102)
-21-05:41:50.946 [VRB] [HEAP-TEL] inbound: -1048 bytes (heap=108492 pin=697 bma=132 phl=104 lt=0 revr=0)
-21-05:41:51.105 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=134 phl=104)
-21-05:41:51.111 [VRB] [HEAP-TEL] inbound: -1032 bytes (heap=107504 pin=698 bma=134 phl=106 lt=0 revr=0)
-21-05:41:51.134 [VRB] [HEAP-TEL] jobs: 1820 bytes (heap=110344)
-21-05:41:51.306 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=130 phl=100)
-21-05:41:51.312 [VRB] [HEAP-TEL] inbound: -836 bytes (heap=108948 pin=699 bma=130 phl=102 lt=0 revr=0)
-21-05:41:51.316 [VRB] [HEAP-TEL] boundary: -796 bytes (bma=132 phl=102)
-21-05:41:51.321 [VRB] [HEAP-TEL] inbound: -1068 bytes (heap=108336 pin=700 bma=132 phl=104 lt=0 revr=0)
-21-05:41:51.347 [VRB] [HEAP-TEL] boundary: -780 bytes (bma=134 phl=104)
-21-05:41:51.351 [VRB] [HEAP-TEL] inbound: -1052 bytes (heap=107740 pin=701 bma=134 phl=106 lt=0 revr=0)
-21-05:41:51.399 [VRB] [HEAP-TEL] jobs: 1768 bytes (heap=110176)
-21-05:41:51.445 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=130 phl=100)
-21-05:41:51.449 [VRB] [HEAP-TEL] inbound: -1040 bytes (heap=108932 pin=702 bma=130 phl=102 lt=0 revr=0)
-21-05:41:51.651 [VRB] [HEAP-TEL] jobs: 580 bytes (heap=110320)
-21-05:41:51.748 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=130 phl=100)
-21-05:41:51.752 [VRB] [HEAP-TEL] inbound: -1192 bytes (heap=108776 pin=703 bma=130 phl=102 lt=0 revr=0)
-21-05:41:51.782 [VRB] [HEAP-TEL] boundary: -432 bytes (bma=132 phl=102)
-21-05:41:51.787 [VRB] [HEAP-TEL] inbound: -876 bytes (heap=108000 pin=704 bma=132 phl=104 lt=0 revr=0)
-21-05:41:51.918 [VRB] [HEAP-TEL] jobs: 1296 bytes (heap=109956)
-21-05:41:51.928 [VRB] [HEAP-TEL] boundary: -776 bytes (bma=130 phl=100)
-21-05:41:51.932 [VRB] [HEAP-TEL] inbound: -1052 bytes (heap=108552 pin=705 bma=130 phl=102 lt=0 revr=0)
-21-05:41:52.169 [VRB] [HEAP-TEL] jobs: 576 bytes (heap=109936)
-21-05:41:54.172 [VRB] [HEAP-TEL] boundary: -788 bytes (bma=130 phl=100)
-21-05:41:54.177 [VRB] [HEAP-TEL] inbound: -1220 bytes (heap=108572 pin=706 bma=130 phl=102 lt=0 revr=0)
-21-05:41:54.234 [VRB] [HEAP-TEL] jobs: 564 bytes (heap=109736)
-21-05:41:54.378 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=130 phl=100)
-21-05:41:54.382 [VRB] [HEAP-TEL] inbound: -1188 bytes (heap=108404 pin=707 bma=130 phl=102 lt=0 revr=0)
-21-05:41:54.500 [VRB] [HEAP-TEL] jobs: 564 bytes (heap=109420)
-21-05:41:54.684 [VRB] [HEAP-TEL] boundary: -748 bytes (bma=130 phl=100)
-21-05:41:54.688 [VRB] [HEAP-TEL] inbound: -1020 bytes (heap=108196 pin=708 bma=130 phl=102 lt=0 revr=0)
-21-05:41:54.718 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=132 phl=102)
-21-05:41:54.723 [VRB] [HEAP-TEL] inbound: -1024 bytes (heap=107628 pin=709 bma=132 phl=104 lt=0 revr=0)
-21-05:41:54.752 [VRB] [HEAP-TEL] jobs: 1148 bytes (heap=109588)
-21-05:41:55.503 [VRB] [HEAP-TEL] boundary: -772 bytes (bma=130 phl=100)
-21-05:41:55.507 [VRB] [HEAP-TEL] inbound: -1060 bytes (heap=108384 pin=710 bma=130 phl=102 lt=0 revr=0)
-21-05:41:55.541 [VRB] [HEAP-TEL] jobs: 580 bytes (heap=109580)
-21-05:41:55.612 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=130 phl=100)
-21-05:41:55.616 [VRB] [HEAP-TEL] inbound: -1028 bytes (heap=108200 pin=711 bma=130 phl=102 lt=0 revr=0)
-21-05:41:55.793 [VRB] [HEAP-TEL] jobs: 596 bytes (heap=109608)
-21-05:41:56.322 [VRB] [HEAP-TEL] boundary: -768 bytes (bma=130 phl=100)
-21-05:41:56.326 [VRB] [HEAP-TEL] inbound: -1228 bytes (heap=108236 pin=712 bma=130 phl=102 lt=0 revr=0)
-21-05:41:56.573 [VRB] [HEAP-TEL] jobs: 592 bytes (heap=109440)
-21-05:41:56.629 [VRB] [HEAP-TEL] boundary: -772 bytes (bma=130 phl=100)
-21-05:41:56.633 [VRB] [HEAP-TEL] inbound: -1216 bytes (heap=107864 pin=713 bma=130 phl=102 lt=0 revr=0)
-21-05:41:56.825 [VRB] [HEAP-TEL] jobs: 596 bytes (heap=109280)
-21-05:41:57.451 [VRB] [HEAP-TEL] boundary: -768 bytes (bma=130 phl=100)
-21-05:41:57.456 [VRB] [HEAP-TEL] inbound: -1036 bytes (heap=107884 pin=714 bma=130 phl=102 lt=0 revr=0)
-21-05:41:57.460 [VRB] [HEAP-TEL] boundary: -772 bytes (bma=132 phl=102)
-21-05:41:57.465 [VRB] [HEAP-TEL] inbound: -1040 bytes (heap=107304 pin=715 bma=132 phl=104 lt=0 revr=0)
-21-05:41:57.606 [VRB] [HEAP-TEL] jobs: 1164 bytes (heap=109284)
-21-05:41:59.296 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=130 phl=100)
-21-05:41:59.301 [VRB] [HEAP-TEL] inbound: -1192 bytes (heap=107948 pin=716 bma=130 phl=102 lt=0 revr=0)
-21-05:41:59.397 [VRB] [HEAP-TEL] boundary: -776 bytes (bma=132 phl=102)
-21-05:41:59.402 [VRB] [HEAP-TEL] inbound: -1196 bytes (heap=106988 pin=717 bma=132 phl=104 lt=0 revr=0)
-21-05:41:59.406 [VRB] [HEAP-TEL] jobs: 1176 bytes (heap=109000)
-21-05:41:59.600 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=130 phl=100)
-21-05:41:59.605 [VRB] [HEAP-TEL] inbound: -1020 bytes (heap=107628 pin=718 bma=130 phl=102 lt=0 revr=0)
-21-05:41:59.679 [VRB] [HEAP-TEL] jobs: 588 bytes (heap=109024)
-21-05:42:00.214 [VRB] [HEAP-TEL] boundary: -768 bytes (bma=130 phl=100)
-21-05:42:00.219 [VRB] [HEAP-TEL] inbound: -1192 bytes (heap=107480 pin=719 bma=130 phl=102 lt=0 revr=0)
-21-05:42:00.447 [VRB] [HEAP-TEL] jobs: 564 bytes (heap=108856)
-21-05:42:00.542 [VRB] [HEAP-TEL] boundary: -752 bytes (bma=130 phl=100)
-21-05:42:00.546 [VRB] [HEAP-TEL] inbound: -1024 bytes (heap=107480 pin=721 bma=130 phl=102 lt=0 revr=0)
-21-05:42:00.627 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=132 phl=102)
-21-05:42:00.633 [VRB] [HEAP-TEL] inbound: -1192 bytes (heap=106748 pin=722 bma=132 phl=104 lt=0 revr=0)
-21-05:42:00.713 [VRB] [HEAP-TEL] jobs: 1136 bytes (heap=108348)
-21-05:42:01.444 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=130 phl=100)
-21-05:42:01.448 [VRB] [HEAP-TEL] inbound: -1032 bytes (heap=107312 pin=723 bma=130 phl=102 lt=0 revr=0)
-21-05:42:01.481 [VRB] [HEAP-TEL] jobs: 584 bytes (heap=108708)
-21-05:42:01.963 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=130 phl=100)
-21-05:42:01.968 [VRB] [HEAP-TEL] inbound: -1200 bytes (heap=107364 pin=724 bma=130 phl=102 lt=0 revr=0)
-21-05:42:01.997 [VRB] [HEAP-TEL] jobs: 572 bytes (heap=108540)
-21-05:42:02.160 [VRB] [HEAP-TEL] boundary: -764 bytes (bma=130 phl=100)
-21-05:42:02.165 [VRB] [HEAP-TEL] inbound: -1196 bytes (heap=106992 pin=725 bma=130 phl=102 lt=0 revr=0)
-21-05:42:02.262 [VRB] [HEAP-TEL] jobs: 588 bytes (heap=108392)
-21-05:42:02.980 [VRB] [HEAP-TEL] boundary: -756 bytes (bma=130 phl=100)
-21-05:42:02.985 [VRB] [HEAP-TEL] inbound: -1184 bytes (heap=106856 pin=726 bma=130 phl=102 lt=0 revr=0)
-21-05:42:03.029 [VRB] [HEAP-TEL] jobs: 560 bytes (heap=108228)
Served by rngit 1.5.0 - Generated in 0.2s